天天看點

035 spark與hive的內建

一:介紹

1.在spark編譯時支援hive

  

035 spark與hive的內建

2.預設的db

  當Spark在編譯的時候給定了hive的支援參數,但是沒有配置和hive的內建,此時預設使用hive自帶的中繼資料管理:Derby資料庫。

035 spark與hive的內建

二:具體內建 

1.将hive的配合檔案hive-site.xml添加到spark應用的classpath中(相當于拷貝)

  将hive-site.xml拷貝到${SPARK_HOME}/conf下。

  下面使用軟連接配接:

035 spark與hive的內建

2.第二步內建

  根據hive的配置參數hive.metastore.uris的情況,采用不同的內建方式

  分别:  

  1. hive.metastore.uris沒有給定配置值,為空(預設情況)

    SparkSQL通過hive配置的javax.jdo.option.XXX相關配置值直接連接配接metastore資料庫直接擷取hive表中繼資料

    但是,需要将連接配接資料庫的驅動添加到Spark應用的classpath中

  2. hive.metastore.uris給定了具體的參數值

    SparkSQL通過連接配接hive提供的metastore服務來擷取hive表的中繼資料

    直接啟動hive的metastore服務即可完成SparkSQL和Hive的內建

    $ hive --service metastore &

3.使用hive-site.xml配置的方式

  配置hive.metastore.uris的方式。

035 spark與hive的內建

4.啟動hive service metastore服務

  如果沒有配置全局hive,就使用bin/hive --service metastore &

035 spark與hive的內建

三:測試

1.spark-sql

035 spark與hive的內建

2.使用

035 spark與hive的內建

四:特殊點(其他在hive中可以使用的sql,在spark-sql中都可以使用)

1.cache

  cache是立即執行的,然後使用下面的可以懶加載。

  uncache是立即執行的。

035 spark與hive的內建

五:使用spark-shell

1.啟動

035 spark與hive的內建

  可以使用sqlContext . ,然後使用Tab進行補全。

  show預設顯示20行。

035 spark與hive的內建

六:補充說明:Spark應用程式第三方jar檔案依賴解決方案

1. 将第三方jar檔案打包到最終形成的spark應用程式jar檔案中

      這種使用的場景是,第三方的jar包不是很大的情況。

2. 使用spark-submit送出指令的參數: --jars 

  這個使用的場景:使用spark-submit指令的機器上存在對應的jar檔案,而且jar包不是太多

  至于叢集中其他機器上的服務需要該jar檔案的時候,通過driver提供的一個http接口來擷取該jar檔案的(http://192.168.187.146:50206/jars/mysql-connector-java-5.1.27-bin.jar Added By User)

  方式:

     $ bin/spark-shell --jars /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar:這樣就不再需要配置hive.metastore.uris參數配置。

  使用“,”分隔多個jar。

3. 使用spark-submit送出指令的參數: --packages 

  這個場景是:如果找不到jar會自動下載下傳,也可以自己設定源。

  作用:

        --packages    Comma-separated list of maven coordinates of jars to include on the driver and executor classpaths. Will search the local maven repo, then maven central and any additional remote  repositories given by --repositories.

The format for the  coordinates should be groupId:artifactId:version. 這一個說明是spark-submit後的package參數的說明。

      $ bin/spark-shell --packages mysql:mysql-connector-java:5.1.27 --repositories http://maven.aliyun.com/nexus/content/groups/public/

  下載下傳路徑:

       # 預設下載下傳的包位于目前使用者根目錄下的.ivy/jars檔案夾中,即是home/beifeng/.ivy/jars

035 spark與hive的內建

  根據上面的maven來寫格式。

4.更改Spark的配置資訊:SPARK_CLASSPATH, 将第三方的jar檔案添加到SPARK_CLASSPATH環境變量中

  使用場景:要求Spark應用運作的所有機器上必須存在被添加的第三方jar檔案

  做法:

    -4.1 建立一個儲存第三方jar檔案的檔案夾:

      $ mkdir external_jars

    -4.2 修改Spark配置資訊

      $ vim conf/spark-env.sh

        SPARK_CLASSPATH=$SPARK_CLASSPATH:/opt/cdh-5.3.6/spark/external_jars/*

    -4.3 将依賴的jar檔案copy到建立的檔案夾中

      $ cp /opt/cdh-5.3.6/hive/lib/mysql-connector-java-5.1.27-bin.jar ./external_jars/

    -4.4 測試

      $ bin/spark-shell

      scala> sqlContext.sql("select * from common.emp").show

繼續閱讀