創建了包含Trino服務的集群后,您可以通過命令行方式連接至Trino,從而進行簡單快捷的數據查詢操作。
前提條件
已創建集群,且在可選服務中選擇了Trino服務。創建集群的具體操作,請參見創建集群。
數據湖(Datalake)和自定義集群
如果創建集群時打開了Kerberos身份認證開關,則創建的集群即為高安全集群,否則將被視為普通集群。
普通集群
通過SSH方式登錄集群,詳情請參見登錄集群。
執行如下命令,連接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
執行如下命令,查看表數據。
select * from <catalog>.<schema>.<table>;
命令中的參數說明如下:
<catalog>
為要連接的數據源的名稱。<schema>
為要使用的數據庫的名稱。<table>
為待查詢的數據表。例如,如果要查看Hive數據源中默認數據庫中的
test
表的數據,您可以使用select * from hive.default.test;
命令。
可選: 執行
quit;
,可以退出Trino命令行。
高安全集群
通過SSH方式登錄集群,詳情請參見登錄集群。
執行如下命令,連接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}
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下的Schema。
show schemas;
可選: 執行
quit;
,可以退出Trino命令行。
舊版數據湖集群(Hadoop)
Hadoop集群控制臺中顯示為Presto。
普通集群
通過SSH方式登錄集群,詳情請參見登錄集群。
執行如下命令,連接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
:指定用于身份驗證的用戶名。
執行如下命令,查看當前Catalog下的Schema。
show schemas;
可選: 執行
quit;
,可以退出Presto命令行。
高安全集群
通過SSH方式登錄集群,詳情請參見登錄集群。
添加Principal并導出keytab文件。
執行如下命令,進入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
執行如下命令,添加指定key的Principal。
addprinc -randkey test
說明本文示例為添加test的Principal。
執行如下命令,導出keytab文件。
xst -k /home/test.keytab test
keytab文件默認導出至/home/目錄下。
執行如下命令,進入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]+$'
命令獲取。執行如下命令,查看當前Catalog下的Schema。
show schemas;
可選:執行
quit;
即可退出Presto命令行。
相關文檔
如果您需要進行復雜的數據查詢、分析和處理操作,或者需要將查詢結果集成到Java應用程序中,則可以使用JDBC的方式連接Trino,詳情請參見通過JDBC方式連接Trino。