-
Notifications
You must be signed in to change notification settings - Fork 7
Release Notes
A continuación se detallas los cambios de este release.
No hay nuevos comportamientos en esta versión
Las siguientes clases y funciones tienen las siguientes mejoras:
Clase huemul_BigDataGovernance:
- huemul_BigDataGovernance (appName: String, args: Array[String], globalSettings: huemul_GlobalPath, LocalSparkSession: SparkSession = null): Se agrega parámetro LocalSparkSession, lo cual permite al desarrollador enviar su propia sesión de spark. Esto permite mayor nivel de parametrización de Spark.
Clase huemul_Table:
- setNumPartitions: (issue #24) Indica el número de particiones que se almacena al escribir un archivo. El valor predeterminado es null, por tanto se determina en forma automática por Spark. En tablas pequeñas se recomienda que el número de particiones sea bajo (por ejemplo 2), de esta forma se evita el problema de los archivos pequeños de spark.
//Indica el número de particiones
setNumPartitions(2)
-
DF_from_SQL(Alias: String, sql: String, SaveInTemp: Boolean = true, NumPartitions: Integer = null): (issue #24) Se agrega parámetro NumPartitions para señalar la cantidad de particiones que utilizará spark para almacenar el resultado temporal del DataFrame.
-
executeFull(NewAlias: String, storageLevelOfDF: org.apache.spark.storage.StorageLevel = null): Agrega parámetro storageLevelOfDF. Esta mejora permite al desarrollador enviar el resultado del DataFrame final a memoria (por ejemplo usando MEMORY_ONLY), por tanto la ejecución de los procesos de DataQuality y validación de integridad referencia se reducen en forma importante. Esto es equivalente a usar el método DataFrame.persist(StorageLevel)
//Ejemplo de uso
TablaMaster.executeFull("DF_Final", org.apache.spark.storage.StorageLevel.MEMORY_ONLY )
- executeOnlyInsert(NewAlias: String, storageLevelOfDF: org.apache.spark.storage.StorageLevel = null): Agrega parámetro storageLevelOfDF. Esta mejora permite al desarrollador enviar el resultado del DataFrame final a memoria (por ejemplo usando MEMORY_ONLY), por tanto la ejecución de los procesos de DataQuality y validación de integridad referencia se reducen en forma importante. Esto es equivalente a usar el método DataFrame.persist(StorageLevel)
//Ejemplo de uso
TablaMaster.executeOnlyInsert("DF_Final", org.apache.spark.storage.StorageLevel.MEMORY_ONLY )
- executeOnlyUpdate(NewAlias: String, storageLevelOfDF: org.apache.spark.storage.StorageLevel = null): Agrega parámetro storageLevelOfDF. Esta mejora permite al desarrollador enviar el resultado del DataFrame final a memoria (por ejemplo usando MEMORY_ONLY), por tanto la ejecución de los procesos de DataQuality y validación de integridad referencia se reducen en forma importante. Esto es equivalente a usar el método DataFrame.persist(StorageLevel)
//Ejemplo de uso
TablaMaster.executeOnlyUpdate("DF_Final", org.apache.spark.storage.StorageLevel.MEMORY_ONLY )
- executeSelectiveUpdate(NewAlias: String, PartitionValueForSelectiveUpdate: String, storageLevelOfDF: org.apache.spark.storage.StorageLevel = null): Agrega parámetro storageLevelOfDF. Esta mejora permite al desarrollador enviar el resultado del DataFrame final a memoria (por ejemplo usando MEMORY_ONLY), por tanto la ejecución de los procesos de DataQuality y validación de integridad referencia se reducen en forma importante. Esto es equivalente a usar el método DataFrame.persist(StorageLevel)
//Ejemplo de uso
TablaMaster.executeSelectiveUpdate("DF_Final", "2019-05-01", org.apache.spark.storage.StorageLevel.MEMORY_ONLY )
Clase huemul_DataFrame:
- DF_from_SQL(Alias: String, sql: String, SaveInTemp: Boolean = true, NumPartitions: Integer = null): (issue #24) Se agrega parámetro NumPartitions para señalar la cantidad de particiones que utilizará spark para almacenar el resultado temporal del DataFrame.
A continuación el detalle de las mejoras sobre la versión:
-
Mensajes de fin de proceso en modo control off: Se muestra mensaje de término cuando RegisterInControl=false. El comportamiento anterior no mostraba el mensaje de término por consola.
-
Issue #25: Se agrega validación de las variables requeridas en GlobalSettings. Si alguna de las variables obligatorias no está con valor definido, el programa enviará un error controlado señalado el problema.
-
Issue #27: El modelo de control ahora agrega el tiempo transcurrido en el mensaje de término de procesos enviado por consola.
A continuación se detallas los cambios de este release.
Supongamos que tenemos la tabla tbl_nombre_tabla. Si al aplicar data quality sobre las filas de dicha tabla se detectan errores (error o warning), el detalle de las filas que no cumplen con la condición se guardan en una nueva tabla llamada tbl_nombre_tabla_dq (mismo nombre definido por el usuario, se agrega "_dq" al final. Esta tabla tiene las siguientes columnas adicionales:
- dq_control_id: Id del proceso que identifica la ejecución del modelo de control de huemul.
- dq_error_columnname: nombre de la columna sobre la cual se aplica la calidad de datos (puede estar en null, depende de la especificación del usuario)
- dq_error_notification: tipo de notificación (error o warning)
- dq_error_code: código de error devuelto (según lo indicado por usuario, o Id interno de huemul según sea el caso)
- dq_error_descripcion: descripción del error indicada por el usuario
El resto de las columnas son idénticas a las que contiene la tabla original.
Las siguientes clases y funciones han sufrido modificaciones:
Clase huemul_Table:
- setSaveDQResult: Nuevo método para indicar si la tabla guarda o no el detalle de errores en DataQuality. El valor por default es "true"
//para evitar guardar el detalle de los errores de DataQuality en la tabla
setSaveDQResult(false)
Clase huemul_DataQuality: Se agrega parámetro "SaveErrorDetails", valor por default "true". En caso de encontrar errores en DataQuality, guarda automáticamente el detalle en la tabla de detalle.
huemul_DataQuality(FieldName: huemul_Columns
,Description: String
,sqlformula: String
,Error_Code: Integer
,QueryLevel: huemulType_DQQueryLevel = huemulType_DQQueryLevel.Row //,IsAggregated: Boolean
,Notification: huemulType_DQNotification = huemulType_DQNotification.ERROR //RaiseError: Boolean
,SaveErrorDetails: Boolean = true
Se agrega la siguiente configuración:
- Nombre de base de datos en Hive para consultar el detalle
- ruta HDFS donde se almacenará detalle de filas con problemas de data quality
//DQ_ERROR SETTING
Global.DQ_SaveErrorDetails = true
Global.DQError_DataBase.append(new huemul_KeyValuePath("production","production_DQError"))
Global.DQError_DataBase.append(new huemul_KeyValuePath("other_environment","other_DQError"))
Global.DQError_Path.append(new huemul_KeyValuePath("production","hdfs:///user/data/production/dqerror/"))
Global.DQError_Path.append(new huemul_KeyValuePath("other_environment","hdfs:///user/data/other/dqerror/"))