shell 创建表 连接db2_大数据技术之SparkSQL(七)连接Hive数据库
Apache Hive是Hadoop上的SQL引擎,Spark SQL編譯時可以包含Hive支持,也可以不包含。包含Hive支持的Spark SQL可以支持Hive表訪問、UDF(用戶自定義函數)以及 Hive 查詢語言(HiveQL/HQL)等。需要強調的一點是,如果要在Spark SQL中包含Hive的庫,并不需要事先安裝Hive。一般來說,最好還是在編譯Spark SQL時引入Hive支持,這樣就可以使用這些特性了。如果你下載的是二進制版本的 Spark,它應該已經在編譯時添加了 Hive 支持。
若要把Spark SQL連接到一個部署好的Hive上,你必須把hive-site.xml復制到 Spark的配置文件目錄中($SPARK_HOME/conf)。即使沒有部署好Hive,Spark SQL也可以運行。 需要注意的是,如果你沒有部署好Hive,Spark SQL會在當前的工作目錄中創建出自己的Hive 元數據倉庫,叫作 metastore_db。此外,如果你嘗試使用 HiveQL 中的 CREATE TABLE (并非 CREATE EXTERNAL TABLE)語句來創建表,這些表會被放在你默認的文件系統中的 /user/hive/warehouse 目錄中(如果你的 classpath 中有配好的 hdfs-site.xml,默認的文件系統就是 HDFS,否則就是本地文件系統)。
3.5.1 內嵌Hive應用
如果要使用內嵌的Hive,什么都不用做,直接用就可以了。
可以通過添加參數初次指定數據倉庫地址:--conf spark.sql.warehouse.dir=hdfs://hadoop102/spark-wearhouse
注意:如果你使用的是內部的Hive,在Spark2.0之后,spark.sql.warehouse.dir用于指定數據倉庫的地址,如果你需要是用HDFS作為路徑,那么需要將core-site.xml和hdfs-site.xml 加入到Spark conf目錄,否則只會創建master節點上的warehouse目錄,查詢時會出現文件找不到的問題,這是需要使用HDFS,則需要將metastore刪除,重啟集群。
3.5.2 外部Hive應用
如果想連接外部已經部署好的Hive,需要通過以下幾個步驟。
1) 將Hive中的hive-site.xml拷貝或者軟連接到Spark安裝目錄下的conf目錄下。
2) 打開spark shell,注意帶上訪問Hive元數據庫的JDBC客戶端
$ bin/spark-shell --jars mysql-connector-java-5.1.27-bin.jar3.5.3 運行Spark SQL CLI
Spark SQL CLI可以很方便的在本地運行Hive元數據服務以及從命令行執行查詢任務。在Spark目錄下執行如下命令啟動Spark SQL CLI:
./bin/spark-sql3.5.4 代碼中使用Hive
(1)添加依賴:
org.apache.spark spark-hive_2.11 2.1.1org.apache.hive hive-exec 1.2.1(2)創建SparkSession時需要添加hive支持
val warehouseLocation: String = new File("spark-warehouse").getAbsolutePathval spark = SparkSession .builder() .appName("Spark Hive Example") .config("spark.sql.warehouse.dir總結
以上是生活随笔為你收集整理的shell 创建表 连接db2_大数据技术之SparkSQL(七)连接Hive数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring整合Quartz定时任务 在
- 下一篇: Centos7-Lvs+Keepaliv