Spark SQL - Hive 表



Hive 作為HiveContext與 Spark 庫捆綁在一起,它繼承自SQLContext。使用 HiveContext,您可以在 HiveMetaStore 中建立和查詢表,並使用 HiveQL 對其進行查詢。沒有現有 Hive 部署的使用者仍然可以建立 HiveContext。當未由hive-site.xml配置時,上下文會自動建立一個名為metastore_db的元儲存和一個名為warehouse的資料夾在當前目錄中。

考慮以下使用 Hive 表的employee記錄示例。所有記錄的資料都在名為employee.txt的文字檔案中。在這裡,我們將首先初始化 HiveContext 物件。使用它,我們將建立一個表,使用 HiveQL 語言將員工記錄資料載入到其中,並對其應用一些查詢。

employee.txt - 將其放置在執行 spark-shell 的當前目錄中。

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

啟動 Spark Shell

首先,我們必須啟動 Spark Shell。使用 HiveTables 意味著我們正在使用 Hive MetaStore。因此,系統將自動建立一個倉庫來儲存表資料。因此,最好在超級使用者上執行 Spark Shell。請考慮以下命令。

$ su
password:
#spark-shell
scala>

建立 SQLContext 物件

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

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

使用 HiveQL 建立表

使用以下命令建立一個名為employee的表,其中包含idnameage欄位。這裡,我們使用HiveQL語法的Create語句。

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 將資料載入到表中

使用以下命令將員工記錄資料載入到 employee 表中。如果成功執行,則給定的員工記錄將根據模式儲存到employee表中。

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

從表中選擇欄位

我們可以在表中執行任何型別的 SQL 查詢。使用以下命令使用 HiveQL select 查詢獲取所有記錄。

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

要顯示記錄資料,請在結果 DataFrame 上呼叫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 |
+------+---------+----+
spark_sql_data_sources.htm
廣告

© . All rights reserved.