Anteriormente hemos conectado con la herramienta cliente (CLI) a HDInsight Developer Preview; en esta ocasión vamos a hacerlo directamente en la distribución disponible de HDInsight en Azure. Para crear un cluster de HDInsight en Windows Azure debes seguir los pasos descritos en este enlace. Esta publicación asume que has creado correctamente tu cluster HDInsight en Windows Azure.

En este post, vamos a hacer lo siguiente:

  • Conectar con la herramienta cliente Hive para consultar el Datawarehouse.
  • Crear una base de datos Hive y ver sus propiedades
  • Conocer las rutas donde se almacena la información

Conectar con la herramienta cliente Hive

Para abrir la herramienta de línea de comando, haz doble-click sobre el .bat de hadoop:

Primeros pasos: Creación de bases de datos en Apache Hive en HDInsight (en la nube) y paths (rutas – HDFS o WASB)

Un error que hay en la distribución actual es que en el Path del cluster desplegado no está incluida la ruta a Hive y Scoop, cosa que si está en la HDInsight Developer Preview:

Primeros pasos: Creación de bases de datos en Apache Hive en HDInsight (en la nube) y paths (rutas – HDFS o WASB)

No le demos demasiada importancia; lo dejamos como está en el cluster en Azure, pero recuerda que tendrás que acceder al path de Hive de forma manual; en la distribución que tenemos ahora, sería en la ruta: c:appsdisthive-0.11.0.1.3.1.0-06bin.

Una vez en la ruta, ejecuta Hive y se lanzará la aplicación de hive para consultar el catálogo (BBDD) de Hive; ejecuta el comando:

show databases;

y aparecerá algo como lo siguiente, que muestra las BBDDs que tienes en la tu instalación de Hive:

Primeros pasos: Creación de bases de datos en Apache Hive en HDInsight (en la nube) y paths (rutas – HDFS o WASB)

Considera las siguientes notas, que creo son importantes:

  • Por defecto, siempre te conectas a la base de datos default
  • El driver JDBC de momento sólo soporta conexiones contra la BBDD default; extraido de aqui:

“For embedded mode, uri is just “jdbc:hive://”. For standalone server, uri is “jdbc:hive://host:port/dbname” where host and port are determined by where the hive server is run. For example, “jdbc:hive://localhost:10000/default”. Currently, the only dbname supported is “default”.”

La evolución es rapidísima por lo que soporte para BBDDs de otro contexto estará disponible pronto.

Crear una BBDD Hive

la sentencia de creación de BBDD es la siguiente:

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name   
[COMMENT database_comment]   
[LOCATION hdfs_path]   
[WITH DBPROPERTIES (property_name=property_value, ...)];

Como curiosidad puedes ver aquí la motivación de las propiedades extendidas.

  • database_name es el nombre de la base de datos, que debe ser único.
  • location es la ruta donde se creará la BBDD.

Diferencias entre HDInsight en Windows Azure y HDInsight Developer Preview:

  • la ruta – Location – en HDInsight en Windows Azure, SIEMPRE será una ruta al Windows Blob Storage (WASB) asociado al la cuenta.
  • la ruta – Location – en HDInsight Developer Preview, será una ruta HDFS (hadoop). Este tipo de rutas también se utilizan en la distribución de HortonWorks.

Puede parecer que HDInsight en Windows Azure ROMPE con la filosofía de Hadoop con el almacenamiento HDFS, quizás es cierto, pero piénsalo de otra forma: delegas en Windows Azure Blob Storage (WASB) todos los aspectos relativos a redundancia, alta-disponibilidad, tamaños de fragmentos, etc. en definitiva, lo que ofrece Microsoft es abstraernos de la capa de almacenamiento. Más aún, el hecho de almacenar la información en WASB, nos permite que podamos crear y destruir el cluster de HDInsight en Windows Azure sin perder los datos que tienes almacenados. Si quieres que el comportamiento sea ese, en el momento de la creación del cluster de HDInsight en Azure deberás indicar donde persiste esa información; accediendo a la cuenta de gestión de Azure deberás especificarlo aqui (resulta desafortunada la traducción de Store por tienda):

Primeros pasos: Creación de bases de datos en Apache Hive en HDInsight (en la nube) y paths (rutas – HDFS o WASB)

No he probado este funcionamiento, pero como indicamos aquí, debería cambiarse la información de configuración de Hive en estos valores:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:sqlserver://XXX.database.windows.net:1433;database=XXXvemetastore;
         encrypt=true;trustServerCertificate=true;create=false</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

 

Para crear una BBDD en una ruta concreta podemos ejecutar la siguiente instrucción:

CREATE DATABASE Ejemplo_WASB
location 'mi_storage.db'

teniendo el siguiente resultado:

Primeros pasos: Creación de bases de datos en Apache Hive en HDInsight (en la nube) y paths (rutas – HDFS o WASB)

Fíjese que “automáticamente” la BBDD la ha creado en la ruta:

wasb://<contenedor>@<micuenta>.blob.core.windows.net/mi_storage.db

Que coincide con la ruta de mi Windows Azure Blob Storage

Primeros pasos: Creación de bases de datos en Apache Hive en HDInsight (en la nube) y paths (rutas – HDFS o WASB)

 

Más aún, si intentamos indicar que la ruta sea HDFS, tendremos el siguiente error:

Primeros pasos: Creación de bases de datos en Apache Hive en HDInsight (en la nube) y paths (rutas – HDFS o WASB)

Microsoft ha modificado el código de esta distribución de Hive para que la creación de las bases de datos sólo se pueda realizar contra almacenamiento Windows Azure Blob Storage (WASB), aspecto que tiene sentido considerando que Microsoft ofrece WASB como el sistema de almacenamiento para HDInsight.

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada.

You May Also Like
Leer más

Cálculos de tiempo personalizados en SSAS Multidimensional

Si para ciertas cuentas no queremos sumar en los cálculos temporales, sino hacer otra operación, por ejemplo, la media, podemos definir una columna (TBAverage) que para cada cuenta indique si suma (0) o hace la media (1). La usaremos en el cubo como una medida que comprobaremos para cada nivel para detectar si esa cuenta debe sumar o hacer la media para los cálculos temporales.