perl連接oracle數據庫,beeline執行sql文件_【SparkSQL】介紹、與Hive整合、Spark的th/beeline/jdbc/thrift

 2023-10-13 阅读 17 评论 0

摘要:目錄一、Spark SQL介紹perl連接oracle數據庫。SQL on Hadoop框架:1)Spark SQL2)Hivehive直接運行sql、3)Impala4)PhoenixSpark SQL是用來處理離線數據的,他的編程模型是DF/DShive編寫存儲過程,Spark SQL的特點:1)集成:可以和各種復雜SQL:

目錄

一、Spark SQL介紹

perl連接oracle數據庫。SQL on Hadoop框架:

1)Spark SQL

2)Hive

hive直接運行sql、3)Impala

4)Phoenix

Spark SQL是用來處理離線數據的,他的編程模型是DF/DS

hive編寫存儲過程,Spark SQL的特點:

1)集成:可以和各種復雜SQL:spark.sql("")

2)統一的數據訪問:連接Hive, Avro, Parquet, ORC, JSON, and JDBC外部數據源統一的方式:spark.read.format("").load("")

sql parser。3)與Hive的集成:由于共享元數據庫的存在,表、UDF都可以共享。impala、Hive、Spark SQL都是共享metastore元數據的

4)jdbc方式:需要啟動服務,比如Hive的hiveserver2、mysql。

Spark的SQL框架:

linux curl命令。1)Spark分支: Spark SQL

2)Hive:Hive on Spark

交互Spark SQL的方式:SQL、DF/DS

DataFrame 是1.3版本出來的,DataSet1.6出現的。

DataFrame=RDD+schema

DataFrame=Dataset[Row]

DF支持使用Scala, Java, Python, and R進行開發。但是DS只支持Scala and Java. Python暫時不支持,所以使用Python是有局限性的。

二、Spark和Hive的整合

只需要兩步:

1)將Hive元數據的配置文件放到Spark/conf下:

cd $SPARK_HOME

cd conf

cp /home/hadoop/app/hive-1.1.0-cdh5.7.0/conf/hive-site.xml .(hive-site.xml中配置了元數據的連接)

2)在Spark中加入mysql的driver驅動包(因為Hive元數據是存儲在MySQL上)。有多種方式添加jar包:

1)方式1:加在spark-shell或者spark-submit后:

啟動的時候通過--jars加入,但是有的時候并不能傳到driver端,所以還需要再使用--driver-class-path:

spark-shell \

--jars /home/hadoop/lib/mysql-connector-java-5.1.43-bin.jar \

--driver-class-path /home/hadoop/lib/mysql-connector-java-5.1.43-bin.jar

如果包多的時候使用--package。

2)方式2:cp包進SPARK_HOME/jars

3)方式3:把jar包配置在spark-default.conf下:

多包的時候使用:

spark.executor.extraClassPath=/home/hadoop/wzq_workspace/lib/*

spark.driver.extraClassPath=/home/hadoop/wzq_workspace/lib/*

單個包的時候使用(本人):

spark.executor.extraClassPath=/home/hadoop/lib/mysql-connector-java-5.1.43-bin.jar

spark.driver.extraClassPath=/home/hadoop/lib/mysql-connector-java-5.1.43-bin.jar

注意:

1)Hive底層是HDFS,一定要保證HDFS進程是開啟的。

2)mysql的服務需要是開啟的。

3)想要使用Spark整合Hive,在編譯Spark的時候需要在編譯指令中加入-Phive -Phive-thriftserver。

4)因為Spark配置中加入了hive-site.xml,所以默認的文件系統就是 HDFS。

否則就是本地文件系統,create table的時候就會在本地創建/user/hive/warehouse目錄 。

SparkSession是Spark SQL程序的入口。在Spark Shell中SparkSession的別名是spark。

三、Spark的thriftserve2/beeline/jdbc

hive有hiveServer2,spark中也有類似的thriftserve2。

位置:spark/sbin

步驟:

1)將${HIVE_HOME}/conf/hive-site.xml 拷貝到${SPARK_HOME}/conf下。

2)添加mysql驅動。

啟動thriftserver服務:

sbin$ ./start-thriftserver.sh --jars ~/software/XXX/mysql-connector-java-5.1.27-bin.jar

會提示日志文件的位置,通過`tail -f XX.log`可以查看這個server是否啟動成功。

占用的端口是10000。

啟動beeline客戶端:

bin$ ./beeline -u jdbc:hive2://localhost:10000 -n hadoop ? #通過過JDBC連接hive

jdbc:hive2://localhost:10000> ?#成功連接

jdbc:hive2://localhost:10000> ?show tables;

jdbc:hive2://localhost:10000> select * from emp;

注意:

要在`$SPARK_HOME/bin`下通過`./beeline`啟動start-thriftserver.sh對應的客戶端,否則啟動啟動成hive的客戶端,因為環境變量中配置了`HIVE_HOME/bin`,也配置了`SPARK_HOME/bin` ,所以要明確位置進行使用。

開啟server之后,也可以在windows上的IDEA中使用JDBC進行連接服務。同樣不需要寫用戶名和密碼。

觀察Spark UI界面:

1)應用的名稱是Thrift JDBC/ODBC Server

2)頁面上多了一個JDBC/ODBC Server的頁簽,并且展示SQL的很多信息和SQL的執行計劃。

四、shell方式使用SQL

實際上就是訪問操作Hive表。

shell方式使用SQL有兩種方式:

1)spark-shell進入:

scala> spark.sql("show databases").show(false)

scala> spark.sql("use hive")

scala> spark.sql("show tables").show(false)

scala> spark.sql("select * from test").show(false)

2)spark-sql進入:

bin$ ./spark-sql --jars

spark-sql(default)> show tables;

spark-sql(default)> select * from emp;

spark-sql (default)> show databases; #直接寫SQL,用;符號結束

用exit;退出spark-sql

spark-sql 底層調用的也是spark-submit。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/135962.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息