版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/someby/article/details/83957028
内容:
1.SparkSQL Thrift解析与测试
2.SparkSQL Thrift Server JDBC编程
一、SparkSQL Thrift解析与测试
ThriftServer是一个JDBC/ODBC接口,用户可以通过JDBC/ODBC连接ThriftServer来访问SparkSQL的数据。ThriftServer在启动的时候,会启动了一个sparkSQL的应用程序,而通过JDBC/ODBC连接进来的客户端共同分享这个sparkSQL应用程序的资源,也就是说不同的用户之间可以共享数据;
ThriftServer启动时还开启一个侦听器,等待JDBC客户端的连接和提交查询。所以,在配置ThriftServer的时候,至少要配置ThriftServer的主机名和端口,如果要使用hive数据的话,还要提供hive metastore的uris。
二、SparkSQL Thrift Server JDBC编程
package SparkSQL;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SQLContext;
import java.sql.*;
/**
* FileName: SparkSQLJDBCToThriftServer
* Author: hadoop
* Email: [email protected]
* Date: 18-11-11 上午8:37
* Description:
* 实战演示Java通过JDBC访问Thrift Server,进而访问SparkSQL,这是企业级开发中常用的方式
*/
public class SparkSQLJDBCToThriftServer {
public static void main(String[] args) {
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
String sql = "select name from people where age = ?";
Connection connection = null;
ResultSet resultSet = null;
try {
connection = DriverManager.getConnection("jdbc:hive2://Master:10001/default?hive.server2.transport.mode=http;hive.server2.thrift.http.path=cliservice", "root", "");
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 30);
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
System.out.println(resultSet.getString(1)); //此处的数据建议保存到Parquet等
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}