【发布时间】:2016-06-21 21:08:18
【问题描述】:
是否可以在 AWS EMR 4.3 上将 Presto 解释器添加到 Zeppelin,如果可以,有人可以发布说明吗?我在 EMR 上运行 Presto-Sandbox 和 Zeppelin-Sandbox。
【问题讨论】:
标签: emr apache-zeppelin presto
是否可以在 AWS EMR 4.3 上将 Presto 解释器添加到 Zeppelin,如果可以,有人可以发布说明吗?我在 EMR 上运行 Presto-Sandbox 和 Zeppelin-Sandbox。
【问题讨论】:
标签: emr apache-zeppelin presto
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 中添加一个新的解释器。
给它起一个 presto 之类的名字,意味着你需要在 zeppelin 中的段落的第一行使用 %presto 作为指令,或者将其设置为默认解释器。
这里需要的设置是:
default.drivercom.facebook.presto.jdbc.PrestoDriver
default.urljdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889
default.userhadoop
请注意,没有提供密码,因为 EMR 环境应该使用 IAM 角色和 ppk 密钥等进行身份验证。
您还需要 presto JDBC 驱动程序 jar 的依赖项。在 Zeppelin 中有多种添加依赖项的方法,但一种简单的方法是通过 Dependencies 下的解释器设置中的 maven groupid:artifactid:version 引用
例如
下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 与带有名为 datakeep 的数据库的 hive 元存储一起使用
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/9254和https://issues.apache.org/jira/browse/ZEPPELIN-2891
在我的情况下,使用对驱动程序的旧引用(显然必须早于 0.180),例如com.facebook.presto:presto-jdbc:0.179 不起作用,zeppelin 给了我一个关于无法下载依赖项的错误。有趣的错误,但可能与 Zeppelin 的本地 maven repo 不包含此内容有关,不确定我是否放弃了。
我可以确认修补驱动程序有效。
git checkout 0.187
mvn clean package 构建jar
jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889?user=hadoop
启动并运行。同时,可能值得考虑将 Athena 作为 Presto 的替代品,因为它是无服务器的,并且实际上只是 Presto 的一个分支。它仅对外部配置单元表有限制,它们必须在 Athena 自己的目录中创建(或者现在在 AWS Glue 目录中,也仅限于外部表)。
【讨论】:
can't download dependencies 错误,请尝试sudo chown -R zeppelin:zeppelin /usr/lib/zeppelin/local-repo/ 并重试
Chris Kang 在 spark-shell 中有一篇很好的帖子,http://theckang.com/2016/spark-with-presto/。我不认为你不能在 Zeppelin 中做到这一点。另一个有用的帖子是确保您在 EMR 中拥有正确的 Java 版本,http://queirozf.com/entries/update-java-to-jdk-8-on-amazon-elastic-mapreduce。目前的 Presto 版本仅在 Java 8 上运行。我希望它为您指明正确的方向。
【讨论】: