通过命令行方式连接Trino

创建了包含Trino服务的集群后,您可以通过命令行方式连接至Trino,从而进行简单快捷的数据查询操作。

前提条件

已创建集群,且在可选服务中选择了Trino服务。创建集群的具体操作,请参见创建集群

使用限制

不支持在集群中同时启用Ranger与Kerberos。

数据湖(Datalake)和自定义集群

说明

如果创建集群时打开了Kerberos身份认证开关,则创建的集群即为高安全集群,否则将被视为普通集群。

普通集群

  1. 通过SSH方式登录集群,详情请参见登录集群

  2. 执行如下命令,连接Trino命令行。

    说明

    EMR-3.44.0及之后版本和EMR-5.10.0版本及之后版本时控制台显示为Trino。EMR-3.44.0之前版本和EMR-5.10.0版本之前版本时控制台显示为Presto。

    EMR-3.44.0及之后版本、EMR-5.10.0版本及之后版本

    trino --server master-1-1:9090

    EMR-3.44.0之前版本、EMR-5.10.0版本之前版本

    presto --server master-1-1:9090
  3. 执行如下命令,查看表数据。

    select * from <catalog>.<schema>.<table>;

    命令中的参数说明如下:

    • <catalog>为要连接的数据源的名称。

    • <schema>为要使用的数据库的名称。

    • <table>为待查询的数据表。

      例如,如果要查看Hive数据源中默认数据库中的test表的数据,您可以使用select * from hive.default.test;命令。

  4. 可选: 执行quit;,可以退出Trino命令行。

高安全集群

  1. 通过SSH方式登录集群,详情请参见登录集群

  2. 执行如下命令,连接Trino命令行。

    EMR-3.44.0及之后版本、EMR-5.10.0版本及之后版本

    trino --server https://${FQDN}:7778 \
           --krb5-config-path /etc/krb5.conf \
           --keystore-path /etc/emr/trino-conf/keystore \
           --keystore-password ${pwd} \
           --krb5-keytab-path /etc/emr/trino-conf/trino.keytab \
           --krb5-principal trino/${FQDN}@${REALM} \
           --krb5-remote-service-name trino \
           --user trino/${FQDN}
           --catalog ${CATALOG}

    EMR-3.44.0之前版本、EMR-5.10.0版本之前版本

    说明

    EMR-3.44.0及之后版本和EMR-5.10.0版本及之后版本时控制台显示为Trino。EMR-3.44.0之前版本和EMR-5.10.0版本之前版本时控制台显示为Presto。

    presto --server https://${FQDN}:7778 \
           --krb5-config-path /etc/krb5.conf \
           --keystore-path /etc/emr/trino-conf/keystore \
           --keystore-password ${pwd} \
           --krb5-keytab-path /etc/emr/trino-conf/trino.keytab \
           --krb5-principal trino/${FQDN}@${REALM} \
           --krb5-remote-service-name trino \
           --user trino/${FQDN}

    参数

    说明

    ${FQDN}

    master-1-1节点的FQDN,可通过hostname -f命令获取,格式为master-1-1.c-xxxxxxx.cn-xxxxxx.emr.aliyuncs.com

    --krb5-config-path

    config.properties中http.authentication.krb5.config的值,固定为/etc/krb5.conf

    --keystore-path

    config.properties中http-server.https.keystore.path的值,固定为/etc/emr/trino-conf/keystore

    --keystore-password

    config.properties中http-server.https.keystore.key的值,即${pwd},需自行获取,可以在master-1-1节点上执行命令awk -F= '/http-server.https.keystore.key/{print $2}' ${TRINO_CONF_DIR}/config.properties查看。

    --krb5-keytab-path

    config.properties中http-server.authentication.krb5.keytab的值,固定为/etc/emr/trino-conf/trino.keytab

    ${REALM}

    config.properties中http-server.authentication.krb5.user-mapping.pattern的值,需自行获取,EMR内部KERBEROS的REALM格式为EMR.C-XXXXXX.COM

    --krb5-remote-service-name

    config.properties中的http-server.authentication.krb5.service-name 的值,固定为trino

    ${CATALOG}

    指定要连接的数据源的名称。例如,--catalog hive,连接Hive数据源。

  3. 执行如下命令,查看当前Catalog下的Schema。

    show schemas;
  4. 可选: 执行quit;,可以退出Trino命令行。

旧版数据湖集群(Hadoop)

说明

Hadoop集群控制台中显示为Presto。

普通集群

  1. 通过SSH方式登录集群,详情请参见登录集群

  2. 执行如下命令,连接Presto命令行。

    presto --server emr-header-1:9090 --catalog hive --schema default --user hadoop

    命令中的参数说明如下:

    • --server emr-header-1:9090:指定Presto服务器的地址和端口号。

    • --catalog hive:指定要连接的数据源的名称。本文示例中,数据源是Hive。如果您需要连接其他类型的数据源,可以相应地修改此参数。

    • --schema default:指定要使用的数据库或模式的名称。本文示例中,使用的是默认的数据库。您可以根据需要修改此参数。

    • --user hadoop:指定用于身份验证的用户名。

  3. 执行如下命令,查看当前Catalog下的Schema。

    show schemas;
  4. 可选: 执行quit;,可以退出Presto命令行。

高安全集群

  1. 通过SSH方式登录集群,详情请参见登录集群

  2. 添加Principal并导出keytab文件。

    1. 执行如下命令,进入Kerberos的admin工具。

      • EMR-3.30.0及后续版本和EMR-4.5.1及后续版本:

        sh /usr/lib/has-current/bin/admin-local.sh /etc/ecm/has-conf -k /etc/ecm/has-conf/admin.keytab
      • EMR-3.30.0之前版本和EMR-4.5.1之前版本:

        sh /usr/lib/has-current/bin/hadmin-local.sh /etc/ecm/has-conf -k /etc/ecm/has-conf/admin.keytab
    2. 执行如下命令,添加指定key的Principal。

      addprinc -randkey test
      说明

      本文示例为添加test的Principal。

    3. 执行如下命令,导出keytab文件。

      xst -k /home/test.keytab test

      keytab文件默认导出至/home/目录下。

  3. 执行如下命令,进入Presto命令行。

    presto --server https://<hostname>:7778 \
           --catalog hive \
           --schema default \
           --keystore-path /etc/ecm/presto-conf/keystore \
           --keystore-password <passwd> \
           --krb5-keytab-path <keytab_file> \
           --krb5-principal <username>@EMR.<cluster_id>.COM \
           --krb5-remote-service-name presto \
           --user <username>

    参数

    描述

    <hostname>

    需要您在集群emr-header-1节点上执行hostname命令获取,格式为emr-header-1.cluster-xxx

    <passwd>

    需要您在集群emr-header-1节点上执行sed -n 's/http-server.https.keystore.key=\([^;]*\)/\1/p' /etc/ecm/presto-conf/config.properties命令获取。

    <keytab_file>

    导出的keytab文件的路径。本文示例为/home/test.keytab

    <username>

    创建的keytab文件的Principal。本文示例为test。

    <cluster_id>

    需要您在集群emr-header-1节点上执行hostname | grep -Eo '[0-9]+$'命令获取。

  4. 执行如下命令,查看当前Catalog下的Schema。

    show schemas;
  5. 可选:执行quit;即可退出Presto命令行。

相关文档

如果您需要进行复杂的数据查询、分析和处理操作,或者需要将查询结果集成到Java应用程序中,则可以使用JDBC的方式连接Trino,详情请参见通过JDBC方式连接Trino