日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過JDBC方式連接Trino

創建了包含Trino服務的集群后,如果您需要進行復雜的數據查詢、分析和處理操作,或者需要將查詢結果集成到Java應用程序中,則可以使用Trino提供的JDBC Driver連接數據庫。

在Maven中引入JDBC Driver

您需要根據您的E-MapReduce集群版本,在pom.xml文件中添加相應的依賴來引入Presto或Trino JDBC Driver。

EMR版本

組件版本

JDBC Driver

Driver類名

  • EMR-3.x系列:EMR-3.38.0及以上

  • EMR-5.x系列:EMR-5.5.0及以上

3XX

<dependency>
    <groupId>io.trino</groupId>
    <artifactId>trino-jdbc</artifactId>
    <version>3XX</version>
</dependency>

io.trino.jdbc.TrinoDriver

  • EMR-3.x系列:EMR-3.25.0~EMR-3.37.x

  • EMR-4.x系列:EMR-4.3.0~EMR-4.9.0

  • EMR-5.x系列:EMR-5.2.1~EMR-5.4.3

3XX

<dependency>
    <groupId>io.prestosql</groupId>
    <artifactId>presto-jdbc</artifactId>
    <version>3XX</version>
</dependency>

io.prestosql.jdbc.PrestoDriver

其他EMR版本

0.2XX

<dependency>
    <groupId>com.facebook.presto</groupId>
    <artifactId>presto-jdbc</artifactId>
    <version>0.2XX</version>
</dependency>

com.facebook.presto.jdbc.PrestoDriver

連接數據庫

  • 當EMR集群為EMR-3.38.0及以上版本或EMR-5.5.0及以上版本時,您可以通過如下JDBC URL,使用JDBC Driver連接數據庫。

    jdbc:trino://<COORDINATOR>:<PORT>/[CATALOG]/[SCHEMA]

    其中,各參數含義如下:

    • <COORDINATOR>:指定Trino集群中主節點的名稱或IP地址。

    • <PORT>:指定Trino服務的端口號。

    • [CATALOG]:可選項,指定要連接的Trino數據庫的Catalog名稱。

    • [SCHEMA]:可選項,指定要連接的Trino數據庫的Schema名稱。

    連接示例如下所示。

    jdbc:trino://<主節點名稱>:9090               # 連接數據庫,使用默認的Catalog和Schema。
    jdbc:trino://<主節點名稱>:9090/hive          # 連接數據庫,使用名為hive的Catalog和默認的Schema。
    jdbc:trino://<主節點名稱>:9090/hive/default  # 連接數據庫,使用名為hive的Catalog和名為default的Schema。
    說明

    本文示例中的<主節點名稱>,請根據您集群的實際信息修改。

    • DataLake集群:主節點名稱為master-1-1。

    • Hadoop集群:主節點名稱為emr-header-1。

  • 其余版本時,您可以通過如下JDBC URL,使用JDBC Driver連接數據庫。

    jdbc:presto://<COORDINATOR>:<PORT>/[CATALOG]/[SCHEMA]

    連接示例如下所示。

    jdbc:presto://<主節點名稱>:9090               # 連接數據庫,使用默認的Catalog和Schema。
    jdbc:presto://<主節點名稱>:9090/hive          # 連接數據庫,使用名為hive的Catalog和默認的Schema。
    jdbc:presto://<主節點名稱>:9090/hive/default  # 連接數據庫,使用名為hive的Catalog和名為default的Schema。

連接參數

JDBC Driver支持多種配置參數,這些參數可以通過以下兩種方式傳入:

  • 使用Properties對象。

    • EMR集群為EMR-3.38.0及以上版本或EMR-5.5.0及以上版本

      String url = "jdbc:trino://<主節點名稱>:9090/hive/default";
      Properties properties = new Properties();
      properties.setProperty("user", "hadoop");
      Connection connection = DriverManager.getConnection(url, properties);
      //......進行數據庫操作
    • 其余版本

      String url = "jdbc:presto://<主節點名稱>:9090/hive/default";
      Properties properties = new Properties();
      properties.setProperty("user", "hadoop");
      Connection connection = DriverManager.getConnection(url, properties);
      //......進行數據庫操作
  • 直接在URL中指定。

    • EMR集群為EMR-3.38.0及以上版本或EMR-5.5.0及以上版本

      String url = "jdbc:trino://<主節點名稱>:9090/hive/default?user=hadoop";
      Connection connection = DriverManager.getConnection(url);
      //......進行數據庫操作
    • 其余版本

      String url = "jdbc:presto://<主節點名稱>:9090/hive/default?user=hadoop";
      Connection connection = DriverManager.getConnection(url);
      //......進行數據庫操作

常用參數說明如下。

參數名稱

格式

參數說明

user

STRING

用于身份驗證和授權的用戶名。

password

STRING

用于LDAP身份驗證的密碼。

socksProxy

STRING:NUMBER

SOCKS代理服務器地址。例如localhost:1080。

httpProxy

STRING:NUMBER

HTTP代理服務器地址。例如localhost:8888。

SSL

BOOLEAN

是否使用HTTPS連接。默認值為false。

SSLTrustStorePath

STRING

Java TrustStore文件的路徑。

SSLTrustStorePassword

STRING

Java TrustStore的訪問密碼。

KerberosRemoteServiceName

STRING

Kerberos服務的名稱。

KerberosPrincipal

STRING

Kerberos Principal名稱。

KerberosUseCanonicalHostname

BOOLEAN

是否使用規范化的主機名。默認值為false。

KerberosConfigPath

STRING

Kerberos配置文件的路徑。

KerberosKeytabPath

STRING

Kerberos KeyTab文件的路徑。

KerberosCredentialCachePath

STRING

Kerberos Credential緩存文件的路徑。

示例

下面是Java使用JDBC Driver連接數據庫的示例代碼。

.....
Connection connection = null;
Statement statement = null;
try {
    // 根據組件名稱使用正確的JDBC URL。
    String url = "jdbc:<trino/presto>://<主節點名稱>:9090/hive/default";
    Properties properties = new Properties();
    properties.setProperty("user", "hadoop");
    // 創建連接對象。
    connection = DriverManager.getConnection(url, properties);
    // 創建Statement對象。
    statement = connection.createStatement();
    // 執行查詢。
    ResultSet rs = statement.executeQuery("select * from t1");
    // 獲取結果。
    int columnNum = rs.getMetaData().getColumnCount();
    int rowIndex = 0;
    while (rs.next()) {
        rowIndex++;
        for(int i = 1; i <= columnNum; i++) {
            System.out.println("Row " + rowIndex + ", Column " + i + ": " + rs.getInt(i));
        }
    }
} catch(SQLException e) {
    LOG.ERROR("Exception thrown.", e);
} finally {
  // 銷毀Statement對象。
  if (statement != null) {
      try {
        statement.close();
    } catch(Throwable t) {
        // No-ops
    }
  }
  // 關閉連接。
  if (connection != null) {
      try {
        connection.close();
    } catch(Throwable t) {
        // No-ops
    }
  }
}

常見問題

為什么連接Trino時報錯Authentication failed: Basic authentication or X-Trino-User must be sent

通常,此錯誤是由于JDBC版本與Trino不匹配引起的。為了避免此問題,請確保使用與您正在連接的Trino版本兼容的JDBC驅動程序。

相關文檔

如果您只是進行簡單的數據查詢操作,建議使用命令行的方式連接Trino,詳情請參見通過命令行方式連接Trino