是否可以在AWS EMR 4.3上向Zeppelin添加Presto解释器,如果是这样,有人可以发布说明吗?我在EMR上运行了Presto-Sandbox和Zeppelin-Sandbox。
答案 0 :(得分:5)
Zeppelin没有正式的Presto翻译,而且提出的Jira票的结论是没有必要,因为你可以只使用jdbc解释器
https://issues.apache.org/jira/browse/ZEPPELIN-27
我正在使用presto& amp; zeppelin,默认的解释器集不包括jdbc,但它可以使用ssh安装到主节点并运行
sudo /usr/lib/zeppelin/bin/install-interpreter.sh --name jdbc
更好的是将其用作引导脚本。
然后你可以在Zeppelin中添加一个新的解释器。
给它起一个像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密钥等用于身份验证。
您还需要presto JDBC驱动程序jar的依赖项。有多种方法可以在Zeppelin中添加依赖项,但一种简单的方法是通过groupid:artifactid:version
下的解释器设置中的maven Dependencies
引用
e.g。
在artifact
下
com.facebook.presto:presto-jdbc:0.170
请注意,版本0.170对应于当前部署在EMR上的Presto版本,该版本将在未来发生变化。您可以在AWS EMR设置中查看正在将哪个版本部署到您的群集。
您还可以让Zeppelin直接连接到目录或目录&amp;通过将它们附加到default.url设置来进行模式化 根据JDBC驱动程序的Presto文档 https://prestodb.io/docs/current/installation/jdbc.html
e.g。例如,使用带有hive Metastore的Presto和一个名为datakeep的数据库
jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889/hive
OR
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回购没有包含这个有关,不确定我放弃了。
我可以确认修补驱动程序有效。
git checkout 0.187
mvn clean package
jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889?user=hadoop
启动并运行。同时,可能值得考虑雅典娜作为Presto的替代方案,让它无需服务器。实际上只是Presto的一个分支。它仅对外部配置单元表有限制,并且必须在Athena自己的目录中创建(或现在在AWS Glue目录中,也限制为外部表)。
答案 1 :(得分:0)
Chris Kang在spark-shell http://theckang.com/2016/spark-with-presto/中有一篇很好的帖子。我不认为你在Zeppelin中无法做到这一点。另一个有用的帖子是确保您在EMR http://queirozf.com/entries/update-java-to-jdk-8-on-amazon-elastic-mapreduce中拥有正确的Java版本。目前的Presto版本只能在Java 8上运行。我希望它能为您提供正确的方向。