日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据Spark(三十三):SparkSQL分布式SQL引擎

發(fā)布時(shí)間:2023/11/28 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年大数据Spark(三十三):SparkSQL分布式SQL引擎 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

分布式SQL引擎

Hive的SQL交互方式

ThriftServer JDBC/ODBC Server

開啟sparksql的thriftserver

使用beeline 客戶端連接

JDBC/ODBC?客戶端


分布式SQL引擎

Hive的SQL交互方式

回顧一下,如何使用Hive進(jìn)行數(shù)據(jù)分析的,提供哪些方式交互分析???

?方式一:交互式命令行(CLI)

  • bin/hive,編寫SQL語句及DDL語句

?方式二:啟動(dòng)服務(wù)HiveServer2(Hive ThriftServer2)

  • 將Hive當(dāng)做一個(gè)服務(wù)啟動(dòng)(類似MySQL數(shù)據(jù)庫,啟動(dòng)一個(gè)服務(wù)),端口為10000
  • 1)? ?交互式命令行,bin/beeline,CDH 版本HIVE建議使用此種方式,CLI方式過時(shí)
  • 2)JDBC/ODBC方式,類似MySQL中JDBC/ODBC方式

SparkSQL模塊從Hive框架衍生發(fā)展而來,所以Hive提供的所有功能(數(shù)據(jù)分析交互式方式)都支持,文檔:http://spark.apache.org/docs/2.4.5/sql-distributed-sql-engine.html

?

ThriftServer JDBC/ODBC Server

開啟sparksql的thriftserver

Spark Thrift Server將Spark Applicaiton當(dāng)做一個(gè)服務(wù)運(yùn)行,提供Beeline客戶端和JDBC方式訪問,與Hive中HiveServer2服務(wù)一樣的。

在企業(yè)中使用PySpark和SQL分析數(shù)據(jù),尤其針對(duì)數(shù)據(jù)分析行業(yè)。

?

?

在$SPARK_HOME目錄下的sbin目錄,有相關(guān)的服務(wù)啟動(dòng)命令:

node1上執(zhí)行


/export/server/spark/sbin/start-thriftserver.sh \--hiveconf hive.server2.thrift.port=10000 \--hiveconf hive.server2.thrift.bind.host=node1 \--master local[2]

停止使用:在實(shí)際大數(shù)據(jù)分析項(xiàng)目中,使用SparkSQL時(shí),往往啟動(dòng)一個(gè)ThriftServer服務(wù),分配較多資源(Executor數(shù)目和內(nèi)存、CPU),不同的用戶啟動(dòng)beeline客戶端連接,編寫SQL語句分析數(shù)據(jù)。

/export/server/spark/sbin/stop-thriftserver.sh

?

使用beeline 客戶端連接

使用SparkSQL的beeline客戶端命令行連接ThriftServer,啟動(dòng)命令如下:


/export/server/spark/bin/beeline!connect jdbc:hive2://node1:10000root123456

show database;編寫SQL語句執(zhí)行分析:

show tables;

select * from person;

監(jiān)控WEB UI界面:

http://node1:4040/jobs/

?

JDBC/ODBC?客戶端

參考文檔:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC

?

SparkSQL中提供類似JDBC/ODBC方式,連接Spark ThriftServer服務(wù),執(zhí)行SQL語句,首先添加Maven依賴庫:


<dependency><groupId>org.apache.spark</groupId><artifactId>spark-hive-thriftserver_2.11</artifactId><version>${spark.version}</version></dependency>

范例演示:采用JDBC方式讀取Hive中db_hive.emp表的數(shù)據(jù)。


package cn.itcast.sqlimport java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}/*** SparkSQL 啟動(dòng)ThriftServer服務(wù),通過JDBC方式訪問數(shù)據(jù)分析查詢*/
object SparkThriftJDBC {def main(args: Array[String]): Unit = {// 定義相關(guān)實(shí)例對(duì)象,未進(jìn)行初始化var conn: Connection = nullvar ps: PreparedStatement = nullvar rs: ResultSet = nulltry {// TODO:?a. 加載驅(qū)動(dòng)類Class.forName("org.apache.hive.jdbc.HiveDriver")// TODO: b. 獲取連接Connectionconn = DriverManager.getConnection("jdbc:hive2://node1:10000/default","root","123456")// TODO: c. 構(gòu)建查詢語句val sqlStr: String ="""|select * from person""".stripMarginps = conn.prepareStatement(sqlStr)// TODO: d. 執(zhí)行查詢,獲取結(jié)果rs = ps.executeQuery()// 打印查詢結(jié)果while (rs.next()) {println(s"id = ${rs.getInt(1)}, name = ${rs.getString(2)}, age = ${rs.getInt(3)}}")}} catch {case e: Exception => e.printStackTrace()} finally {if (null != rs) rs.close()if (null != ps) ps.close()if (null != conn) conn.close()}}
}

總結(jié)

以上是生活随笔為你收集整理的2021年大数据Spark(三十三):SparkSQL分布式SQL引擎的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。