Spark SQL - Tabelle Hive

Hive viene fornito in bundle con la libreria Spark come HiveContext, che eredita da SQLContext. Utilizzando HiveContext, puoi creare e trovare tabelle in HiveMetaStore e scrivere query su di esso utilizzando HiveQL. Gli utenti che non dispongono di una distribuzione Hive esistente possono comunque creare un HiveContext. Quando non configurato dahive-site.xml, il contesto crea automaticamente un metastore chiamato metastore_db e una cartella chiamata warehouse nella directory corrente.

Considera il seguente esempio di employeeregistrare utilizzando le tabelle Hive. Tutti i dati registrati si trovano nel file di testo denominatoemployee.txt. Qui inizializzeremo prima l'oggetto HiveContext. Usando questo, creeremo una tabella, caricheremo i dati del record dei dipendenti in essa utilizzando il linguaggio HiveQL e applicheremo alcune query su di essa.

employee.txt - Inseriscilo nella directory corrente in cui è in esecuzione spark-shell.

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

Avvia Spark Shell

Per prima cosa, dobbiamo avviare Spark Shell. Lavorare con HiveTables significa che stiamo lavorando su Hive MetaStore. Pertanto, il sistema creerà automaticamente un magazzino per l'archiviazione dei dati della tabella. Pertanto, è meglio eseguire Spark Shell su superutente. Considera il seguente comando.

$ su
password:
#spark-shell
scala>

Crea oggetto SQLContext

Usa il comando seguente per inizializzare HiveContext in Spark Shell

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

Crea tabella utilizzando HiveQL

Utilizzare il seguente comando per creare una tabella denominata employee con i campi id, name, e age. Qui stiamo usando ilCreate dichiarazione di HiveQL sintassi.

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'")

Carica i dati nella tabella utilizzando HiveQL

Utilizzare il seguente comando per caricare i dati del record dei dipendenti nella tabella dei dipendenti. Se viene eseguito correttamente, i record dei dipendenti forniti vengono archiviati nel fileemployee tabella come da schema.

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

Seleziona Campi dalla tabella

Possiamo eseguire qualsiasi tipo di query SQL nella tabella. Utilizza il comando seguente per recuperare tutti i record utilizzando la query di selezione HiveQL.

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

Per visualizzare i dati del record, chiamare il show() metodo sul risultato DataFrame.

scala> result.show()

Produzione

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