您可以通過JDBC方式訪問Lindorm計算引擎服務,使用Spark SQL完成資料查詢、資料分析和資料生產等操作。
前提條件
JDBC串連地址
查看Lindorm計算引擎串連地址的具體步驟請參見查看串連地址。在執行個體詳情頁左側導覽列單擊資料庫連接,選擇計算引擎頁簽,即可查看JDBC地址和JAR地址。JDBC地址分為專用網路和公網兩種,格式均為jdbc:hive2://<host>:<port>。
使用Beeline訪問JDBC服務
-
下載Spark安裝包。
-
解壓Spark安裝包。
-
將解壓後的路徑配置為Spark路徑。
export SPARK_HOME=/path/to/spark/; -
填寫設定檔:
$SPARK_HOME/conf/beeline.conf。-
endpoint:Lindorm計算引擎的JDBC串連地址。
-
user:寬表使用者名稱。
-
password:寬表使用者名稱對應的密碼。
-
shareResource:多個互動會話之間是否共用Spark資源,預設值為true。
說明如您需要配置更多作業參數,請在beeline.conf檔案中進行添加。每行僅支援配置一個作業參數,格式為:
key=value,例如:spark.dynamicAllocation.minExecutors=3。 -
-
運行
$SPARK_HOME/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
-
-
編寫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"