- Spark SQL 教程
- Spark SQL - 首頁
- Spark - 簡介
- Spark - RDD
- Spark - 安裝
- Spark SQL - 簡介
- Spark SQL - DataFrame
- Spark SQL - 資料來源
- Spark SQL 有用資源
- Spark SQL - 快速指南
- Spark SQL - 有用資源
- Spark SQL - 討論
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的表,其中包含id、name和age欄位。這裡,我們使用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 | +------+---------+----+