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>