HuemulSolutions / huemul-bigdatagovernance

Huemul BigDataGovernance, es una framework que trabaja sobre Spark, Hive y HDFS. Permite la implementación de una estrategia corporativa de dato único, basada en buenas prácticas de Gobierno de Datos. Permite implementar tablas con control de Primary Key y Foreing Key al insertar y actualizar datos utilizando la librería, Validación de nulos, largos de textos, máximos/mínimos de números y fechas, valores únicos y valores por default. También permite clasificar los campos en aplicabilidad de derechos ARCO para facilitar la implementación de leyes de protección de datos tipo GDPR, identificar los niveles de seguridad y si se está aplicando algún tipo de encriptación. Adicionalmente permite agregar reglas de validación más complejas sobre la misma tabla.
Apache License 2.0
11 stars 7 forks source link

Eliminar Backup de tablas maestras y de referencia #79

Closed sebasrod closed 5 years ago

sebasrod commented 5 years ago

Actualmente es posible realizar backup de las tablas maestras y de referencia, estos backup quedan indefinidamente en HDFS hasta que el usuario las elimine manualmente.

Se requiere implementar una función que deje solo los N backups mas nuevos, y el resto los elimine en forma automática.

Para realizar esto, se debe utilizar la información almacenada en el modelo de control.

sebasrod commented 5 years ago

Agrega método control_getBackupToDelete(numBackupToMaintain: Int): Boolean. Recibe el parámetro "numBackupToMaintain" que indica la cantidad de backup que se mantendrán en HDFS (los "N" más nuevos). El resto los elimina.

El siguiente ejemplo es una implementación que puede correr en el horario que el administrador lo establezca:

import com.huemulsolutions.bigdata.control.huemul_Control
import com.huemulsolutions.bigdata.control.huemulType_Frequency
import com.huemulsolutions.bigdata.common.huemul_BigDataGovernance

object dropOldBackups {
  def main(args: Array[String]): Unit = {

    val huemulBigDataGov  = new huemul_BigDataGovernance(s"BigDataGovernance Util", args, com.yourcompany.settings.globalSettings.Global)

    //numBackupToMaintain
    val numBackupToMaintain = huemulBigDataGov.arguments.GetValue("numBackupToMaintain", null,"param missing: numBackupToMaintain. Example: numBackupToMaintain=2 to keep 2 recent backups")

    if (numBackupToMaintain != null) {
      val Control = new huemul_Control(huemulBigDataGov,null, huemulType_Frequency.ANY_MOMENT, false, true) 
      Control.control_getBackupToDelete(numBackupToMaintain.toInt)
    }
    huemulBigDataGov.close()
  }
}