1. 程式人生 > >第73課:Spark SQL Thrift Server實戰

第73課:Spark SQL Thrift Server實戰

內容:

    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(); } } }