天天看點

sparkSql 中,beeline 連接配接thriftserver 來操作表中的資料

beeline:用戶端,負責與thriftserver連接配接

thriftserver :服務端,負責允許遠端用戶端使用多種程式設計語言如Java、Python向Hive送出請求,取回結果。 使用jdbc協定連接配接hive的thriftserver伺服器。正常的hive僅允許使用HiveQL執行查詢、更新等操作,并且該方式比較笨拙單一。幸好Hive提供了輕用戶端的實作,通過HiveServer或者HiveServer2,用戶端可以在不啟動CLI的情況下對Hive中的資料進行操作。

1.啟動thriftserver 服務,端口10000

./sbin/start-thriftserver.sh \
  --hiveconf hive.server2.thrift.port=10000 \
  --master local[2] \
  --jars /opt/dataTec/spark-2.0.2-bin-hadoop2.6/mysql-connector-java-5.1.6-bin.jar
           

2.啟動beeline ,beeline 在spark的bin目錄下,端口10000 與上面一緻

./bin/beeline -u jdbc:hive2://slave:10000 -n root -p 123456
           

在開發調試環境中(本地調試伺服器上的spark-sql),在使用連接配接thriftserver來操作spark-sql表中資料時要提前啟動thriftserver

import java.sql.DriverManager

/**
  * Created by hello on 2018-05-24.
  */
object SparkSqlThriftServerAPP {

  def main(args: Array[String]) {
    
    Class.forName("org.apache.hive.jdbc.HiveDriver")

    val conn = DriverManager.getConnection("jdbc:hive2://192.168.91.127:10000","root","123456")

    val pstmt = conn.prepareStatement("select id,provice,num from info")

    val rs = pstmt.executeQuery()

    while(rs.next()){
      println("id->"+rs.getInt("id") +"  provice->"+rs.getString("provice")+"  num->"+rs.getInt("num") )
    }

    rs.close()

    pstmt.close()

    conn.close()

  }

}
           

pom.xml 

<dependency>
            <groupId>org.spark-project.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>1.2.1.spark2</version>
</dependency>