gpt4 book ai didi

emr - EMR 上 Zeppelin 中的 Presto 解释器

转载 作者:行者123 更新时间:2023-12-01 19:26:22 27 4
gpt4 key购买 nike

是否可以将 Presto 解释器添加到 AWS EMR 4.3 上的 Zeppelin,如果可以,有人可以发布说明吗?我在 EMR 上运行 Presto-Sandbox 和 Zeppelin-Sandbox。

最佳答案

Zeppelin 没有官方的 Presto 解释器,而 Jira 票证提出的结论是没有必要,因为您可以使用 jdbc 解释器

https://issues.apache.org/jira/browse/ZEPPELIN-27

我正在使用 presto 和 zeppelin 运行后来的 EMR,默认的解释器集不包括 jdbc,但可以使用 ssh 安装到主节点并运行

sudo /usr/lib/zeppelin/bin/install-interpreter.sh --name jdbc

更好的是使用它作为引导脚本。

然后您可以在 Zeppelin 中添加新的解释器。

  1. 点击 Zeppelin 右上角的登录名下拉菜单
  2. 点击解释器
  3. 点击“+创建”

给它起一个类似 presto 的名称,这意味着您需要在 zeppelin 中的段落的第一行使用 %presto 作为指令,或者将其设置为默认解释器。

您需要的设置是:

default.driver com.facebook.presto.jdbc.PrestoDriver

default.url jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889

default.user hadoop

请注意,没有提供密码,因为 EMR 环境应使用 IAM 角色和 ppk key 等进行身份验证。

您还需要 presto JDBC 驱动程序 jar 的依赖项。在 Zeppelin 中添加依赖项有多种方法,但一种简单的方法是通过 Maven groupid:artifactid:version解释器设置中的引用 Dependencies

例如下artifact

com.facebook.presto:presto-jdbc:0.170

请注意,版本 0.170 对应于当前部署在 EMR 上的 Presto 版本,该版本将来会发生变化。您可以在 AWS EMR 设置中查看正在部署到您的集群的版本。

您还可以通过将 Zeppelin 附加到 default.url 设置来直接连接到目录或目录和架构根据 JDBC 驱动程序的 Presto 文档 https://prestodb.io/docs/current/installation/jdbc.html

例如例如,将 Presto 与 Hive 元存储结合使用,并使用名为 datakeep 的数据库

jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889/hive

或者

jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889/hive/datakeep

更新2018 年 2 月

EMR 5.11.1 使用 presto 0.187,Zeppelin 解释器向 Presto 驱动程序提供属性的方式存在问题,导致类似 Unrecognized connection property 'url' 的错误。

目前唯一的解决方案似乎是在工件中使用旧版本,或手动上传修补的 presto 驱动程序请参阅https://github.com/prestodb/presto/issues/9254https://issues.apache.org/jira/browse/ZEPPELIN-2891

就我而言,使用对驱动程序的旧引用(显然必须早于 0.180),例如com.facebook.presto:presto-jdbc:0.179不起作用,zeppelin 给了我一个关于无法下载依赖项的错误。有趣的错误,但可能与 Zeppelin 的本地 Maven 存储库不包含此内容有关,不确定我是否放弃了这一点。

我可以确认修补驱动程序有效。

  • (假设您安装了java和maven)
  • 克隆 presto github 存储库
  • 检查发布标签,例如git checkout 0.187
  • 根据该补丁进行编辑 https://groups.google.com/group/presto-users/attach/1231343dbdd09/presto-jdbc.diff?part=0.1&authuser=0
  • 使用 mvn clean package 构建 jar
  • 将 jar 复制到 zeppelin 机器上 zeppelin 用户有权读取的位置。
  • 在解释器中的“依赖项 - 工件”部分下,使用该 jar 文件的绝对路径而不是 Maven 引用。
  • 将用户传递到 presto 驱动程序时似乎存在问题,因此只需将其作为 url 参数添加到“default.url”jdbc 连接字符串中即可,例如 jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889?user=hadoop

启动并运行。同时,可能值得考虑 Athena 作为 Presto 的替代品,因为它是无服务器的并且实际上只是 Presto 的一个分支。它确实仅对外部 hive 表有限制,并且它们必须在 Athena 自己的目录中创建(或者现在在 AWS Glue 目录中创建,也仅限于外部表)。

关于emr - EMR 上 Zeppelin 中的 Presto 解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35858606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com