Spark SQL - Hive表

2018-12-20 16:55 更新
Hive與Spark庫(kù)捆綁為HiveContext,它繼承自SQLContext。 使用HiveContext,您可以在HiveMetaStore中創(chuàng)建和查找表,并使用HiveQL在其上寫(xiě)入查詢(xún)。 沒(méi)有現(xiàn)有Hive部署的用戶(hù)仍然可以創(chuàng)建HiveContext。 當(dāng)未由hive-site.xml配置時(shí),上下文會(huì)自動(dòng)在當(dāng)前目錄中創(chuàng)建名為metastore_db的元數(shù)據(jù)庫(kù)和名為warehouse的文件夾。

參考以下案例使用Hive表完成雇員記錄。 所有記錄的數(shù)據(jù)都在名為employee.txt的文本文件中。 這里,我們將首先初始化HiveContext對(duì)象。 使用它,我們將創(chuàng)建一個(gè)表,使用HiveQL語(yǔ)言將雇員記錄數(shù)據(jù)加載到其中,并對(duì)其應(yīng)用一些查詢(xún)。

employee.txt - 將其放在spark-shell正在運(yùn)行的當(dāng)前目錄中。

1201, satish, 25
1202, krishna, 28
1203, amith, 39
1204, javed, 23
1205, prudvi, 23
啟動(dòng)Spark Shell
首先,我們必須啟動(dòng)Spark Shell。 使用HiveTables意味著我們正在處理Hive MetaStore。 因此,系統(tǒng)將自動(dòng)創(chuàng)建用于存儲(chǔ)表數(shù)據(jù)的倉(cāng)庫(kù)。 因此,最好在超級(jí)用戶(hù)上運(yùn)行Spark Shell。 請(qǐng)參考以下命令。

$ su
password:
#spark-shell
scala>

創(chuàng)建SQLContext對(duì)象 

使用以下命令將HiveContext初始化到Spark Shell中。

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

使用HiveQL創(chuàng)建表 

使用以下命令創(chuàng)建名為employee的表,其字段為id,name和age。這里,我們使用HiveQL語(yǔ)法的Create語(yǔ)句。

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

使用HiveQL將數(shù)據(jù)加載到表中 

使用以下命令將員工記錄數(shù)據(jù)加載到員工表中。如果成功執(zhí)行,給定的員工記錄將按照模式存儲(chǔ)在 employee 中。

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

從表中選擇字段 

我們可以在表中執(zhí)行任何類(lèi)型的SQL查詢(xún)。使用以下命令可以使用HiveQL select查詢(xún)獲取所有記錄。

scala> val result = sqlContext.sql("FROM employee SELECT id, name, age")
要顯示記錄數(shù)據(jù),請(qǐng)對(duì)結(jié)果DataFrame調(diào)用show()方法。
scala> result.show()

輸出

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

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)