天天看点

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>