Hive 與 SparkSQL 整合
配置文件的整合
- 集羣中已安裝hive的情況
將$HIVE_HOME/conf
下的hive-site.xml
拷貝到$SPARK_HOME/conf
中,即可
- 集羣中未安裝hive的情況
在$SPARK_HOME/conf
創建一個hive-site.xml
,再對xml文件配置一下可以訪問的metadata即可
對應metadata的數據庫驅動
- 將對應數據庫的驅動放於
$SPARK_HOME/jars
目錄下,這樣Spark在啓動的時候會去自動加載 - 在啓動Spark時通過
-jars
去指定數據庫驅動
推薦第一種做法
通過spark-shell來訪問
啓動spark-shell
spark/bin/spark-shell Spark context Web UI available at http://127.0.0.1:4040 Spark context available as 'sc' (master = local[*], app id = local-1533734039679). Spark session available as 'spark'.
通過sparksession訪問hive
我們先看看是否能hive中已存在的表
scala> spark.sql("show tables").show()
+--------+------------+-----------+
|database| tableName|isTemporary|
+--------+------------+-----------+
| default| lj_sz_crawl| false|
| default| lj_sz_deal| false|
| default|lj_sz_number| false|
+--------+------------+-----------+
從顯示的結果可以看出hive中的表是可以看的,我們再查看錶中的數據
scala> spark.sql("select * from lj_sz_crawl limit 3").show()
+--------------------+--------------------+-----+-------+--------+--------+----+------+
| title| descri|price|acreage|position| type|high|direct|
+--------------------+--------------------+-----+-------+--------+--------+----+------+
|近地鐵精裝,疲憊身心的補給源泉,宜...|南向正規2房 客廳出陽臺 交通便利...| 7000| 76.67| 福田區|2室2廳1衛 | 高| 北|
|佳兆業前海廣場一期 2室1廳 6500元| 這個經紀人很懶,沒寫核心賣點| 6500| 77| 南山區|2室1廳1衛 | 高| 東南|
|京基東方華都 精裝修 採光通風好 ...|正規一房一廳,房子精裝修,乾淨整潔...| 4800| 41.82| 羅湖區|1室1廳1衛 | 高| 東南 南|
+--------------------+--------------------+-----+-------+--------+--------+----+------+
數據也是可以查詢得到
在scala文件中訪問hive
val spark = SparkSession
.builder()
.appName("Rating Data")
.enableHiveSupport()
.getOrCreate()
從spark2.0開始,出現的sparksession
來代替sparkcontext
,整合了hiveContext
和sqlContext
,我們只需要在創建SparkSession
的時候調用enableHiveSupport
方法即可在我們的程序中訪問hive