Skip to content

huemul_BigDataGovernance

Sebastián Rodríguez edited this page May 7, 2019 · 6 revisions

huemul_BigDataGovernance

huemul_BigDataGovernance es la clase inicial de la librería Huemul Big Data Governance. Esta clase expone atributos y métodos relacionados a spark, y utilitarios de uso común en cualquier proyecto BigData.

Inicialización

import com.huemulsolutions.bigdata.common._

object process_yourapp {
  def main(args : Array[String]) {
    val appName = "yourAppName"
    val huemulBigDataGov = new huemul_BigDataGovernance (appName, args, globalSettings)

    //Lectura de parámetros de negocio
    var param_year = huemulBigDataGov.arguments.GetValue("year", null, "Debe especificar el parametro year, ej: year=2017").toInt
    
    //Application Code

    huemulBigDataGov.close()
  }
}
  • appName: Nombre de tu aplicación, esto se usará para inicializar el objeto Spark.
  • args: Los argumentos que recibe el método main. Estos parámetros son los que recibe desde spark-submit
  • globalSettings: Seteo global con rutas globales de HDFS, cadenas de conexión y nombres de bases de datos en Hive.
  • LocalSparkSession: Sesión de spark inicializada por el desarrollador (opcional, si no se especifica Huemul crea una sesión spark, habilitado desde la versión 1.3).

Parámetros de Inicialización.

Desde spark-submit se pueden especificar una serie de parámetros que definen el comportamiento de ejecución de tu aplicación:

  • Environment: argumento obligatorio, valida que el valor entregado por parámetros corresponda a los definidos en GlobalSettings.GlobalEnvironments. Ejemplo: environment=production
  • Malla_Id: argumento opcional, si hay un orquestador de procesos que está invocando la llamada del programa, se debe especificar en este parámetro. En el modelo de control quedará relacionado el Id e malla con el Id de proceso. Ejemplo malla_id=10ja1
  • DebugMode: argumento opcional, posibles valores: true o false. Valor por default: false. Permite ver el 100% de mensajes, querys y resultado de querys por la consola, adicionalmente guarda el resultado intermedio de cada consulta en un ambiente temporal definido en las variables de GlobalSettings. Al habilitar el modo Debug hace que la ejecución del programa tome más tiempo, debido principalmente a la captura de estadísticas y la persistencia de los DF. Ejemplo DebugMode=true
  • HideLibQuery: argumento opcional, posibles valores: true o false. Valor por default: false. Al cambiar el valor a true, oculta todas las Querys que son ejecutadas por la librería (siempre y cuando esté DebugMode en true). Ejemplo: HideLibQuery=true
  • SaveTempDF: argumento opcional, posibles valores: true o false. Valor por default: true. Guarda los resultados intermedios de cada DF en disco, siempre y cuando esté DebugMode en true. Ejemplo: SaveTempDF=true
  • ImpalaEnabled: argumento opcional, se puede habilitar en GlobalSettings. posibles valores: true o false. Valor por default: false. Al tener valor true, actualiza la metadata de Impala al crear o actualizar tablas. Ejemplo: ImpalaEnabled=true
  • RegisterInControl: argumento opcional, posibles valores: true o false. Valor por default: true. Registra toda la actividad de la librería en el modelo de control en PostgreSQL. Al estar desactivado no queda registro alguno de la actividad. Ejemplo: RegisterInControl=false
  • TestPlanMode: argumento opcional, posibles valores: true o false. Valor por default: false. Al habilitar este parámetro es equivalente al parámetro RegisterInControl=false, también deja inhabilitado el parámetro ImpalaEnabled. Esta opción puede ser usada cuando se ejecuta el código con datos de prueba, y no es necesario registrar esta actividad. Ejemplo: TestPlanMode=True

Métodos.

Los siguientes métodos están disponibles en la clase.

  • arguments.GetValue(Key: String, DefaultValue: String, ErrorMessageIfNotExist: String): String: Lee un parámetro enviado desde la línea de comando. Key es el nombre del parámetro. DefaultValue indica el valor por default para los parámetros opcionales, si el parámetro es obligatorio DefaultValue debe ser null. ErrorMessageIfNotExist es el mensaje que se mostrará en la consola en caso que el parámetro sea obligatorio.
  • spark: expone los métodos de Spark 2.x
  • DF_ExecuteQuery(Alias: String, SQL: String): DataFrame: Retorna un DataFrame y lo asocia a un alias, esto a partir del SQL entregado por el usuario. Esto es similar a usar el método val df = spark.sql("query") y luego crear el alias con df.createOrReplaceTempView(alias)
  • getMonth(Date: Calendar): Int: Retorna el mes a partir de una fecha
  • getDay(Date: Calendar): Int: Retorna el dia a partir de una fecha
  • getYear(Date: Calendar): Int: Retorna el año a partir de una fecha
  • getHour(Date: Calendar): Int: Retorna la hora a partir de una fecha
  • setDateTime (ano: Integer, mes: Integer, dia: Integer, hora: Integer, min: Integer, seg: Integer): Calendar: Devuelve un objeto Calendar a partir de los parámetros año, mes, dia, hora, minuto y segundo.
  • setDate (StringDate: String): Calendar: Retorna un objeto Calendar a partir de una fecha en formato YYYY-MM-DD
  • ReplaceWithParams(text: String, YYYY: Integer, MM: Integer, DD: Integer, hh: Integer, mm: Integer, ss: Integer, AdditionalParams: String = null) : String: Retorna un string convirtiendo el string "text" con los caracteres comodines del tipo {{YYYY}}, se pueden especificar nuevos comodines de la forma {{comodin}}=valor en el parámetro "AdditionalParams"
  • HasName(name: String): Boolean: Retorna false en caso que el texto es vacío o nulo
  • close(): método que debe ser invocado al finalizar el programa. Este método limpia la caché de tablas temporales de spark, cierra la conexión de spark, cierra la conexión de PostgreSQL y cierra la conexión con Impala.