HuemulSolutions/huemul-bigdatagovernance

Nuevas opciones para crear tablas externas en Huemul

Closed this issue · 1 comments

Agregar nuevas opciones para indicar la forma de crear las tablas externas en hive. Se deben entregar las siguientes opciones:

  • Crear tabla Externa usando Spark (sesión de Spark)
  • Crear tabla Externa usando Hive (JDBC)

Se debe agregar estas opciones para cada tipo de tabla:

  • Parquet
  • ORC
  • HBase

En total se deben crear 6 variables adicionales en GlobalSettings con los siguientes valores (para mantener compatibilidad con versiones anteriores).

PARQUET_createExternalTableUsingSpark: Boolean = true
PARQUET_createExternalTableUsingHive: Boolean = false
ORC_createExternalTableUsingSpark: Boolean = true
ORC_createExternalTableUsingHive: Boolean = false
HBASE_createExternalTableUsingSpark: Boolean = false
HBASE_createExternalTableUsingHive: Boolean = true

Adicionalmente, se deben agregar opciones para crear las tablas externas en huemul_Tables, para ello se deben agregar las siguientes variables (con los valores por default para mantener compatibilidad):

  • createExternalTable: Boolean = true
  • createExternalTable_DQ: Boolean = true
  • createExternalTable_OVT: Boolean = true

Finalmente, para determinar como crear las tablas externas, se debe seguir el siguiente criterio:

if (createExternalTable == true) {
  if (PARQUET_createExternalTableUsingSpark == true) {
     //crear tabla usando spark.sql
  }

  if (PARQUET_createExternalTableUsingHive == true) {
     //crear tabla usando HIVE JDBC (HIVE_Setting de GlobalSettings)
  }
}

Se simplifica y generaliza los parámetros para el desarrollador.

La nueva opción en globalSettings permite indicar un conector JDBC de HIVE para crear metadata.
Esta funcionalidad permite realizar las siguientes acciones:

  • En caso de utilizar versiones Hortonworks 3.0.0 hasta 3.1.4, la metadata de spark está separada de Hive, por tanto las tablas creadas desde spark no son visibles en Hive.
  • En caso de usar HBase: spark no permite crear tablas externas usando el SerDe de HBase.

Para usar esta nueva funcionalidad, se deben agregar las siguientes líneas al código de globalSettings:

   //Agregar variable con opciones de conexió JDBC para HIVE
   val HIVE_Setting = new ArrayBuffer[huemul_KeyValuePath]()
   HIVE_Setting.append(new huemul_KeyValuePath("production",getKeyFromFile(s"${localPath}prod-demo-setting-hive-connection.set")))
   HIVE_Setting.append(new huemul_KeyValuePath("experimental",getKeyFromFile(s"${localPath}prod-demo-setting-hive-connection.set")))

   //Para indicar el uso adicional de HIVE mediante JDBC para crear la metadata.
   Global.externalBBDD_conf.Using_HIVE.setActive(true).setActiveForHBASE(true).setConnectionStrings(HIVE_Setting)

Cuando se activa esta opción, también se mantiene activa la creación de metadata usando Spark.