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 |
+------+--------+----+