Spark SQL - Archivos Parquet

Parquet es un formato columnar, compatible con muchos sistemas de procesamiento de datos. Las ventajas de tener un almacenamiento en columnas son las siguientes:

  • El almacenamiento en columnas limita las operaciones de E / S.

  • El almacenamiento en columnas puede recuperar columnas específicas a las que necesita acceder.

  • El almacenamiento en columnas consume menos espacio.

  • El almacenamiento en columnas proporciona datos mejor resumidos y sigue una codificación específica del tipo.

Spark SQL proporciona soporte tanto para leer como para escribir archivos de parquet que capturan automáticamente el esquema de los datos originales. Al igual que los conjuntos de datos JSON, los archivos de parquet siguen el mismo procedimiento.

Echemos otro vistazo al mismo ejemplo de employee registrar datos nombrados employee.parquet colocado en el mismo directorio donde se ejecuta Spark-Shell.

Given data- No se preocupe por convertir los datos de entrada de los registros de los empleados en formato parquet. Usamos los siguientes comandos que convierten los datos RDD en un archivo Parquet. Colocar elemployee.json document, que hemos utilizado como archivo de entrada en nuestros ejemplos anteriores.

$ spark-shell
Scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
Scala> val employee = sqlContext.read.json(“emplaoyee”)
Scala> employee.write.parquet(“employee.parquet”)

No es posible mostrarle el archivo de parquet. Es una estructura de directorio, que puede encontrar en el directorio actual. Si desea ver el directorio y la estructura del archivo, use el siguiente comando.

$ cd employee.parquet/

$ ls
_common_metadata
Part-r-00001.gz.parquet
_metadata
_SUCCESS

Los siguientes comandos se utilizan para leer, registrarse en la tabla y aplicar algunas consultas en ella.

Abrir Spark Shell

Inicie el shell Spark usando el siguiente ejemplo

$ spark-shell

Crear objeto SQLContext

Genere SQLContext usando el siguiente comando. Aquí,sc significa objeto SparkContext.

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

Leer entrada de archivo de texto

Cree un RDD DataFrame leyendo un dato del archivo de parquet llamado employee.parquet utilizando la siguiente declaración.

scala> val parqfile = sqlContext.read.parquet(“employee.parquet”)

Almacene el DataFrame en la tabla

Use el siguiente comando para almacenar los datos del DataFrame en una tabla llamada employee. Después de este comando, podemos aplicarle todo tipo de sentencias SQL.

scala> Parqfile.registerTempTable(“employee”)

La mesa de empleados está lista. Pasemos ahora algunas consultas SQL a la tabla usando el métodoSQLContext.sql().

Seleccione Consulta en DataFrame

Utilice el siguiente comando para seleccionar todos los registros del employeemesa. Aquí usamos la variableallrecordspara capturar todos los datos de los registros. Para mostrar esos registros, llameshow() método en él.

scala> val allrecords = sqlContext.sql("SELeCT * FROM employee")

Para ver los datos de resultados de allrecords DataFrame, use el siguiente comando.

scala> allrecords.show()

Salida

+------+--------+----+
|  id  | name   |age |
+------+--------+----+
| 1201 | satish | 25 |
| 1202 | krishna| 28 |
| 1203 | amith  | 39 |
| 1204 | javed  | 23 |
| 1205 | prudvi | 23 |
+------+--------+----+