您可以通過JDBC方式訪問Lindorm計算引擎服務,使用Spark SQL完成資料查詢、資料分析和資料生產等操作。
前提條件
JDBC串連地址
查看Lindorm計算引擎串連地址的具體步驟請參見查看串連地址。
使用Beeline訪問JDBC服務
- 下載Spark發布包。
- 解壓Spark發布包。
- 將解壓後的路徑配置為Spark路徑。
export SPARK_HOME=/path/to/spark/;
- 填寫設定檔:
$SPARK_HOME/conf/beeline.conf
。- endpoint:Lindorm計算引擎的JDBC串連地址。
- user:寬表使用者名稱。
- password:寬表使用者名稱對應的密碼。
- shareResource:多個互動會話之間是否共用Spark資源,預設值為true。
- 運行
/bin/beeline
命令。在互動會話中輸入SQL語句。
使用Java訪問JDBC服務
- 添加JDBC環境依賴,以Maven為例。
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.8</version> </dependency>
- 編寫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)); } } }
- 可選:如果您需要配置更多的作業參數可以在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服務
- 下載Spark發布包。
- 解壓Spark發布包。
- 配置路徑參數。
- 配置Spark路徑。
export SPARK_HOME=/path/to/dir/;
- 配置CLASSPATH。
export CLASSPATH=$CLASSPATH:$SPARK_HOME/jars/*;
- 安裝JayDeBeApi。
pip install JayDeBeApi
- 配置Spark路徑。
- 編寫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()
- 可選:如果您需要配置更多的作業參數可以在JDBC串連地址中指定,樣本如下:
endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****;spark.dynamicAllocation.minExecutors=3;spark.sql.adaptive.enabled=false"