版權聲明:未經允許,隨意轉載,請附上本文鏈接謝謝(づ ̄3 ̄)づ╭❤~
https://blog.csdn.net/xiaoduan_/article/details/79730384
thriftserver/beeline、jdbc等方式連接到SparkSQL
thriftserver和beeline的簡單配置和使用
- 啓動thriftserver: 默認端口是10000 ,可以修改
$ ./${SPARK_HOME}/sbin/start-thriftserver.sh --master local[2] --jars ~/software/mysql-connector-java-5.1.27-bin.jar
同樣需要通過--jars
傳入mysql驅動 啓動beeline
beeline -u jdbc:hive2://localhost:10000 -n hadoop
hadoop爲用戶名 端口和前面保持一致修改thriftserver啓動佔用的默認端口號:
./start-thriftserver.sh \
--master local[2] \
--jars ~/software/mysql-connector-java-5.1.27-bin.jar \
--hiveconf hive.server2.thrift.port=14000
連接14000上的thriftserver
beeline -u jdbc:hive2://localhost:14000 -n hadoop
thriftserver和普通的spark-shell/spark-sql有什麼區別?
- 使用thriftserver後,spark-shell、spark-sql都是一個spark application;
- 使用thriftserver後,不管你啓動多少個客戶端(beeline/code),永遠都是一個spark application,解決了一個數據共享的問題,多個客戶端可以共享數據。
使用jdbc的方式連接
- 首先需要在pom.xml文件中添加hive-jdbc的依賴
<!--添加hive-jdbc依賴-->
<dependency>
<groupId>org.spark-project.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.2.1.spark2</version>
</dependency>
- 開發示例代碼,這裏假設已經啓動了thriftserver的14000端口
簡單測試 try catch就不寫了
package com.anthony.spark
import java.sql.DriverManager
/**
* @Description: 使用JDBC的連接sparkSQL
* @Date: Created in 16:29 2018/3/28
* @Author: Anthony_Duan
*/
object SparkSQLThriftServerApp {
def main(args: Array[String]): Unit = {
Class.forName("org.apache.hive.jdbc.HiveDriver")
val conn = DriverManager.getConnection("jdbc:hive2://localhost:14000","duanjiaxing","")
val pstmt = conn.prepareStatement("select empno, ename, sal from emp")
val rs = pstmt.executeQuery()
while (rs.next()) {
println("empno:" + rs.getInt("empno") +
" , ename:" + rs.getString("ename") +
" , sal:" + rs.getDouble("sal"))
}
rs.close()
pstmt.close()
conn.close()
}
}