全部產品
Search
文件中心

:JDBC開發實踐

更新時間:Jul 06, 2024

您可以通過JDBC方式訪問Lindorm計算引擎服務,使用Spark SQL完成資料查詢、資料分析和資料生產等操作。

前提條件

  • 已建立並開通Lindorm執行個體的寬表引擎,具體操作請參見建立執行個體
  • 已開通Lindorm執行個體的計算引擎服務,具體操作請參見開通與變更配置
  • 已安裝Java環境,要求使用JDK 1.8及以上版本。

JDBC串連地址

查看Lindorm計算引擎串連地址的具體步驟請參見查看串連地址擷取串連地址

使用Beeline訪問JDBC服務

  1. 下載Spark發布包
  2. 解壓Spark發布包。
  3. 將解壓後的路徑配置為Spark路徑。
    export SPARK_HOME=/path/to/spark/;
  4. 填寫設定檔:$SPARK_HOME/conf/beeline.conf
    • endpoint:Lindorm計算引擎的JDBC串連地址。
    • user:寬表使用者名稱。
    • password:寬表使用者名稱對應的密碼。
    • shareResource:多個互動會話之間是否共用Spark資源,預設值為true。
  5. 運行/bin/beeline命令。在互動會話中輸入SQL語句。

    Lindorm計算引擎支援各類資料來源的訪問,具體請參見使用須知

    以Hive資料為例,開通Lindorm Hive服務後您可以通過以下方式建表和讀寫資料。開通方法請參見開通Hive服務
    CREATE TABLE test (id INT, name STRING);
    INSERT INTO test VALUES (0, 'Jay'), (1, 'Edison');
    SELECT id, name FROM test;

使用Java訪問JDBC服務

  1. 添加JDBC環境依賴,以Maven為例。
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-jdbc</artifactId>
        <version>2.3.8</version>
    </dependency>
  2. 編寫Java程式碼訪問JDBC服務,程式碼範例如下:
    import java.sql.*;
    
    public class App {
        public static void main(String[] args) throws Exception {
            Class.forName("org.apache.hive.jdbc.HiveDriver");
    
            String endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****";
            String user = "";
            String password = "";
            Connection con = DriverManager.getConnection(endpoint, user, password);
    
            Statement stmt = con.createStatement();
            String sql = "SELECT * FROM test";
            ResultSet res = stmt.executeQuery(sql);
    
            while (res.next()) {
                System.out.println(res.getString(1));
            }
    
        }
    }
  3. 可選:如果您需要配置更多的作業參數可以在JDBC串連地址中指定,樣本如下:
    String endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****;spark.dynamicAllocation.minExecutors=3;spark.sql.adaptive.enabled=false";

使用Python訪問JDBC服務

  1. 下載Spark發布包
  2. 解壓Spark發布包。
  3. 配置路徑參數。
    1. 配置Spark路徑。
      export SPARK_HOME=/path/to/dir/;
    2. 配置CLASSPATH。
      export CLASSPATH=$CLASSPATH:$SPARK_HOME/jars/*;
    3. 安裝JayDeBeApi。
      pip install JayDeBeApi
  4. 編寫Python程式碼訪問JDBC服務,程式碼範例如下:
    import jaydebeapi
    
    driver = 'org.apache.hive.jdbc.HiveDriver'
    endpoint = 'jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****'
    jarPath = '/path/to/sparkhome/jars/hive-jdbc-****.jar'
    user = '****'
    password = '****'
    
    conn=jaydebeapi.connect(driver, endpoint, [user, password], [jarPath])
    cursor = conn.cursor()
    cursor.execute("select 1")
    results = cursor.fetchall()
    
    cursor.close()
    conn.close()
  5. 可選:如果您需要配置更多的作業參數可以在JDBC串連地址中指定,樣本如下:
    endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****;spark.dynamicAllocation.minExecutors=3;spark.sql.adaptive.enabled=false"