Hive 與 SparkSQL 整合

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,整合了hiveContextsqlContext,我們只需要在創建SparkSession的時候調用enableHiveSupport方法即可在我們的程序中訪問hive

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章