Spark SQL - File di parquet

Il parquet è un formato colonnare, supportato da molti sistemi di elaborazione dati. I vantaggi di avere una memoria colonnare sono i seguenti:

  • L'archiviazione a colonne limita le operazioni di I / O.

  • L'archiviazione a colonne può recuperare colonne specifiche a cui devi accedere.

  • L'archiviazione a colonne consuma meno spazio.

  • L'archiviazione a colonne fornisce dati riepilogati meglio e segue la codifica specifica del tipo.

Spark SQL fornisce supporto sia per la lettura che per la scrittura di file parquet che acquisiscono automaticamente lo schema dei dati originali. Come i set di dati JSON, i file parquet seguono la stessa procedura.

Diamo un'altra occhiata allo stesso esempio di employee registrare i dati denominati employee.parquet posizionato nella stessa directory in cui è in esecuzione spark-shell.

Given data- Non preoccuparti di convertire i dati di input dei record dei dipendenti in formato parquet. Usiamo i seguenti comandi che convertono i dati RDD in file Parquet. Posiziona ilemployee.json documento, che abbiamo utilizzato come file di input nei nostri esempi precedenti.

$ 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”)

Non è possibile mostrarvi il file parquet. È una struttura di directory, che puoi trovare nella directory corrente. Se vuoi vedere la directory e la struttura dei file, usa il seguente comando.

$ cd employee.parquet/

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

I seguenti comandi vengono utilizzati per leggere, registrarsi in una tabella e applicare alcune query su di essa.

Apri Spark Shell

Avvia la shell Spark usando il seguente esempio

$ spark-shell

Crea oggetto SQLContext

Genera SQLContext utilizzando il seguente comando. Qui,sc significa oggetto SparkContext.

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

Leggi input da file di testo

Creare un DataFrame RDD leggendo un dato dal file parquet denominato employee.parquet utilizzando la seguente dichiarazione.

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

Memorizza il DataFrame nella tabella

Utilizzare il comando seguente per archiviare i dati DataFrame in una tabella denominata employee. Dopo questo comando, possiamo applicare tutti i tipi di istruzioni SQL in esso.

scala> Parqfile.registerTempTable(“employee”)

Il tavolo dei dipendenti è pronto. Passiamo ora alcune query SQL sulla tabella utilizzando il metodoSQLContext.sql().

Seleziona Query su DataFrame

Utilizzare il seguente comando per selezionare tutti i record dal file employeetavolo. Qui usiamo la variabileallrecordsper acquisire tutti i dati dei record. Per visualizzare quei record, chiamashow() metodo su di esso.

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

Per vedere i dati dei risultati di allrecords DataFrame, usa il seguente comando.

scala> allrecords.show()

Produzione

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