Presto 支持多种操作模式,可以通过 Presto Cli、JDBC、HUE 等方式,连接至 Presto 进行 SQL 查询分析。
LAS Presto 默认启用 LDAP 认证,因此您在操作 Presto 时需要携带必要的认证信息。如果您需要关闭 LDAP 认证(不推荐),可以在控制台 集群详情 > 服务列表 > Presto > 服务参数 页面将presto.ldap-enabled
配置项设置为 false,并重启 Presto 服务即可。
如果希望通过 Presto Cli 访问操作 Presto,您需要先登录到目标集群,然后执行如下命令进入 Presto 交互终端:
$ presto --user <username> --password
LAS Presto 默认会从配置目录读取 default-cli.properties
配置文件,并使用该配置文件的内容来填充命令行中缺失的参数。当然,您也可以主动在命令行中进行参数设置,在命令行中指定的参数优先级要高于 default-cli.properties
配置文件。
在完成登录到 Presto Cli 交互终端后,接下来您可以在终端中输入需要执行的 SQL 语句执行查询任务,例如:
presto> select * from tpch.sf1.nation; nationkey | name | regionkey | comment -----------+----------------+-----------+-------------------------------------------------------------------------------------------------------------------- 0 | ALGERIA | 0 | haggle. carefully final deposits detect slyly agai 1 | ARGENTINA | 1 | al foxes promise slyly according to the regular accounts. bold requests alon 2 | BRAZIL | 1 | y alongside of the pending deposits. carefully special packages are about the ironic forges. slyly special 3 | CANADA | 1 | eas hang ironic, silent packages. slyly regular packages are furiously over the tithes. fluffily bold 4 | EGYPT | 4 | y above the carefully unusual theodolites. final dugouts are quickly across the furiously regular d 5 | ETHIOPIA | 0 | ven packages wake quickly. regu 6 | FRANCE | 3 | refully final requests. regular, ironi 7 | GERMANY | 3 | l platelets. regular accounts x-ray: unusual, regular acco 8 | INDIA | 2 | ss excuses cajole slyly across the packages. deposits print aroun 9 | INDONESIA | 2 | slyly express asymptotes. regular deposits haggle slyly. carefully ironic hockey players sleep blithely. carefull 10 | IRAN | 4 | efully alongside of the slyly final dependencies. 11 | IRAQ | 4 | nic deposits boost atop the quickly final requests? quickly regula 12 | JAPAN | 2 | ously. final, express gifts cajole a 13 | JORDAN | 4 | ic deposits are blithely about the carefully regular pa 14 | KENYA | 0 | pending excuses haggle furiously deposits. pending, express pinto beans wake fluffily past t 15 | MOROCCO | 0 | rns. blithely bold courts among the closely regular packages use furiously bold platelets? 16 | MOZAMBIQUE | 0 | s. ironic, unusual asymptotes wake blithely r 17 | PERU | 1 | platelets. blithely pending dependencies use fluffily across the even pinto beans. carefully silent accoun 18 | CHINA | 2 | c dependencies. furiously express notornis sleep slyly regular accounts. ideas sleep. depos 19 | ROMANIA | 3 | ular asymptotes are about the furious multipliers. express dependencies nag above the ironically ironic account 20 | SAUDI ARABIA | 4 | ts. silent requests haggle. closely express packages sleep across the blithely 21 | VIETNAM | 2 | hely enticingly express accounts. even, final 22 | RUSSIA | 3 | requests against the platelets use never according to the quickly regular pint 23 | UNITED KINGDOM | 3 | eans boost carefully special requests. accounts are. carefull 24 | UNITED STATES | 1 | y final packages. slow foxes cajole quickly. quickly silent platelets breach ironic accounts. unusual pinto be (25 rows) Query 091124_00003_5sscg, FINISHED, 2 nodes Splits: 32 total, 32 done (100.00%) [Latency: client-side: 0:02, server-side: 0:02] [25 rows, 0B] [11 rows/s, 0B/s]
使用 JDBC 方式操作 Presto 需引入 presto-jdbc 依赖,您可以通过 maven 方式下载公共版本(如下),也可以获取由 LAS 平台编译生成的 presto-jdbc 依赖包(位于集群${PRESTO_HOME}
目录)。
<dependency> <groupId>com.facebook.presto</groupId> <artifactId>presto-jdbc</artifactId> <version>${latest_version}</version> </dependency>
以 Java 语言为例,如果您需要在您的程序代码中使用 JDBC 访问 Presto,可以参考如下示例程序,区分是否启用 LDAP 认证。
Properties props = new Properties(); // username 和 password 来自在用户管理中导入或创建的用户 props.setProperty("user", "<username>"); props.setProperty("password", "<password>"); props.setProperty("SSL", "true"); // keystore 路径,对应 http-server.https.keystore.path 配置项 props.setProperty("SSLKeyStorePath", "<keystore_path>"); // keystore 密码,对应 http-server.https.keystore.key 配置项 props.setProperty("SSLKeyStorePassword", "<keystore_password>"); /* * 连接地址模板为 jdbc:presto://<host>:<port>,其中: * - port 在启用 LDAP 认证时为 8085,未启用 LDAP 认证时为 8084; * - host 为 Coordinator 所在的主机名,例如 emr-xxxxxx-master-1 */ String url = "jdbc:presto://<coordinator_host>:8085"; try (Connection connection = DriverManager.getConnection(url, props); Statement statement = connection.createStatement()) { ResultSet resultSet = statement.executeQuery("select * from tpch.sf1.nation"); // ... }
Properties props = new Properties(); // username 来自在用户管理中导入或创建的用户 props.setProperty("user", "<username>"); /* * 连接地址模板为 jdbc:presto://<host>:<port>,其中: * - port 在启用 LDAP 认证时为 8085,未启用 LDAP 认证时为 8084; * - host 为 Coordinator 所在的主机名,例如 emr-xxxxxx-master-1 */ String url = "jdbc:presto://<coordinator_host>:8084"; try (Connection connection = DriverManager.getConnection(url, props); Statement statement = connection.createStatement()) { ResultSet resultSet = statement.executeQuery("select * from tpch.sf1.nation"); // ... }
上述程序编译成 jar 包之后可以在您的 LAS 集群上运行。如果您是在 LAS 集群之外运行则需要注意:
keystore_path
参数指向您本地的 keystore 文件。通过 JDBC 方式,您也能在本地使用数据库管理工具连接访问 Presto。本小节将以 DBeaver 为例,为您介绍如何配置 Presto 数据库连接。在本地访问 LAS 集群 Presto 服务时,通常需要您为 Presto Coordinator 所在节点绑定公网 IP,同时还需区分是否启用了 LDAP 认证。
master-1-1.emr-d2bc787xxx.cn-beijing.emr-volces.com
http-server.https.keystore.path
配置项获取。
除了填写基本的主机、端口、用户名,以及密码信息外,还需要编辑驱动属性,添加如下配置项:
参数 | 说明 |
---|---|
SSL | 启用 SSL 连接,值始终设置为 true |
SSLKeyStorePath | 对应下载到本地的 keystore 文件路径 |
SSLKeyStorePassword | 对应 keystore 证书密钥,可以通过控制台侧 Presto 服务参数中 |
关闭 LDAP 认证场景下连接 Presto 服务相对要简单很多,只需要配置主机、端口,以及用户名即可。
您可以通过 Hue 界面提交 Presto SQL 语句进行查询分析,执行 SQL 的用户即为登录 Hue 的用户。LAS Hue 默认会依据 Presto 配置项进行自动化配置,实现开箱即用,但在以下情况出现时,您需要在控制台手动重启 Hue 服务,以便感知 Presto 配置项的变化:
当您登录并进入 HUE 交互页面后,可以按照以下操作步骤运行 Presto SQL 查询: