埃塞俄比亚齐柏林飞艇的Presto口译员

Mil*_*cic 5 emr presto apache-zeppelin

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

Dav*_*vos 6

没有针对齐柏林飞艇的官方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密钥等进行身份验证。

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

例如在 artifact

com.facebook.presto:presto-jdbc:0.170

请注意,版本0.170对应于EMR当前部署的Presto版本,将来会更改。您可以在AWS EMR设置中查看将哪个版本部署到您的集群。

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

例如,将Presto与配置单元metastore和名为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 /浏览/ ZEPPELIN-2891

在我的情况下,使用对驱动程序的旧引用(显然必须早于0.180),例如com.facebook.presto:presto-jdbc:0.179,它不起作用,并且齐柏林飞艇给了我一个关于无法下载依赖项的错误。有趣的错误,但可能与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
  • 将罐子复制到齐柏林飞艇用户可以读取的齐柏林飞艇上。
  • 在解释器中,在“依赖关系-工件”部分下,而不是maven引用,请使用该jar文件的绝对路径。
  • 将用户传递给presto驱动程序似乎存在问题,因此只需将其作为url参数添加到“ default.url” jdbc连接字符串中即可,例如 jdbc:presto://<YOUR EMR CLUSTER MASTER DNS>:8889?user=hadoop

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


100*_*01b 0

Chris Kang 有一篇关于在 Spark-Shell 中执行此操作的好文章,http://theckang.com/2016/spark-with-presto/。我不认为你不能在齐柏林飞艇上做到这一点。另一篇有用的文章是确保您在 EMR 中拥有正确的 Java 版本,http://queirozf.com/entries/update-java-to-jdk-8-on-amazon-elastic-mapreduce。截至撰写本文时,当前的 Presto 版本仅在 Java 8 上运行。我希望它能为您指明正确的方向。