Spark SQL: tablas de Hive

Hive viene incluido con la biblioteca Spark como HiveContext, que hereda de SQLContext. Con HiveContext, puede crear y buscar tablas en HiveMetaStore y escribir consultas en él mediante HiveQL. Los usuarios que no tienen una implementación de Hive existente aún pueden crear un HiveContext. Cuando no está configurado por elhive-site.xml, el contexto crea automáticamente una tienda de metadatos llamada metastore_db y una carpeta llamada warehouse en el directorio actual.

Considere el siguiente ejemplo de employeegrabar utilizando tablas de Hive. Todos los datos registrados están en el archivo de texto llamadoemployee.txt. Aquí, primero inicializaremos el objeto HiveContext. Usando eso, crearemos una tabla, cargaremos los datos del registro de empleados en ella usando el lenguaje HiveQL y aplicaremos algunas consultas en ella.

employee.txt - Colóquelo en el directorio actual donde se ejecuta Spark-Shell.

1201, satish, 25
1202, krishna, 28
1203, amith, 39
1204, javed, 23
1205, prudvi, 23

Inicie Spark Shell

Primero, tenemos que iniciar Spark Shell. Trabajar con HiveTables significa que estamos trabajando en Hive MetaStore. Por lo tanto, el sistema creará automáticamente un almacén para almacenar datos de tablas. Por lo tanto, es mejor ejecutar Spark Shell en superusuario. Considere el siguiente comando.

$ su
password:
#spark-shell
scala>

Crear objeto SQLContext

Use el siguiente comando para inicializar HiveContext en Spark Shell

scala> val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

Crear tabla usando HiveQL

Utilice el siguiente comando para crear una tabla llamada employee con los campos id, namey age. Aquí, estamos usando elCreate declaracion de HiveQL sintaxis.

scala> sqlContext.sql("CREATE TABLE IF NOT EXISTS employee(id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'")

Cargar datos en la tabla usando HiveQL

Utilice el siguiente comando para cargar los datos del registro de empleados en la tabla de empleados. Si se ejecuta con éxito, los registros de empleados dados se almacenan en elemployee tabla según el esquema.

scala> sqlContext.sql("LOAD DATA LOCAL INPATH 'employee.txt' INTO TABLE employee")

Seleccionar campos de la tabla

Podemos ejecutar cualquier tipo de consultas SQL en la tabla. Utilice el siguiente comando para obtener todos los registros mediante la consulta de selección de HiveQL.

scala> val result = sqlContext.sql("FROM employee SELECT id, name, age")

Para mostrar los datos del registro, llame al show() método en el DataFrame de resultado.

scala> result.show()

Salida

<console>:26, took 0.157137 s
+------+---------+----+
|  id  | name    |age |
+------+---------+----+
| 1201 | Satish  | 25 |
| 1202 | Krishna | 28 |
| 1203 | amith   | 39 |
| 1204 | javed   | 23 |
| 1205 | prudvi  | 23 |
+------+---------+----+