thriftserver/beeline/jdbc等方式連接到SparkSQL

版權聲明:未經允許,隨意轉載,請附上本文鏈接謝謝(づ ̄3 ̄)づ╭❤~
https://blog.csdn.net/xiaoduan_/article/details/79730384

thriftserver/beeline、jdbc等方式連接到SparkSQL

thriftserver和beeline的簡單配置和使用

  1. 啓動thriftserver: 默認端口是10000 ,可以修改
    $ ./${SPARK_HOME}/sbin/start-thriftserver.sh --master local[2] --jars ~/software/mysql-connector-java-5.1.27-bin.jar
    同樣需要通過 --jars 傳入mysql驅動
  2. 啓動beeline
    beeline -u jdbc:hive2://localhost:10000 -n hadoop
    hadoop爲用戶名 端口和前面保持一致

  3. 修改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有什麼區別?

  1. 使用thriftserver後,spark-shell、spark-sql都是一個spark application;
  2. 使用thriftserver後,不管你啓動多少個客戶端(beeline/code),永遠都是一個spark application,解決了一個數據共享的問題,多個客戶端可以共享數據。

使用jdbc的方式連接

  1. 首先需要在pom.xml文件中添加hive-jdbc的依賴
        <!--添加hive-jdbc依賴-->
        <dependency>
            <groupId>org.spark-project.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>1.2.1.spark2</version>
        </dependency>
  1. 開發示例代碼,這裏假設已經啓動了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()

  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章