一、实现功能
SparkSQL的ThriftServer服务其实就是Hive的hiveServer2服务,只是将底层的执行改成spark,同时在spark上启动。
二、配置
1.修改hive-site.xml的hiveserver2的配置信息
<property>
<name>hive.server2.thrift.bind.host</name>
<value>bigdata.ibeifeng.com</value>
</property>
2. 启动服务
./sbin/start-thriftserver.sh
3.停止服务
./sbin/stop-thriftserver.sh
三、测试
1.通过命令beeline来测试
./bin/beeline
beeline> !connect jdbc:hive2://bigdata.ibeifeng.com:10000
注意:给定用户名的时候,如果hdfs没有做权限验证,可以给定任何值;如果做了权限验证,必须给定操作tmp文件夹有权限的用户名称
2.通过scala代码验证
(1)添加依赖
<!--sparksql中的Thriftserver2的jdbc测试链接-->
<dependency>
<groupId>org.spark-project.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>0.13.1</version>
</dependency>
(2)代码
package _0728sql
import java.sql.DriverManager
/**
*
*/
object SaprkSQLThrift extends App{
//1.创建驱动
val driver="org.apache.hive.jdbc.HiveDriver"
Class.forName(driver)
//2.创建连接
val (url,username,userpasswd)=("jdbc:hive2://bigdata.ibeifeng.com:10000","root","123456")
val conn=DriverManager.getConnection(url,username,userpasswd)
//3.执行sql
// val sql="select * from default.emp a join default.dept b on a.deptno = b.deptno"
val sql="select * from default.emp"
val pstmt=conn.prepareStatement(sql)
val rs=pstmt.executeQuery()
while(rs.next()){
// println(rs.getInt("default.empno")+":"+rs.getString("default.ename"))
// println(rs.getString("emp.ename"))
println(rs.getInt("emp.empno")+":"+rs.getString("emp.ename"))
}
//4.关闭
rs.close()
pstmt.close()
conn.close()
}