第73課:Spark SQL Thrift Server實戰
阿新 • • 發佈:2018-12-20
內容:
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(); } } }