无法将 Tableau 连接到 emr 上的 presto



我无法将 Tableau 连接到 EMR 集群上的 presto。版本: Tableau 10, emr-5.3.0, Presto 0.157.1

我可以使用命令通过presto-cli进行连接

[hadoop@ip-172-xx-yy-zz scripts]$ presto-cli
presto> use hive.poc;
presto:poc> show tables;
        Table
...

但是,尝试使用 Teradata ODBC 连接器从 Tableau 进行连接时,我无法做到。结果,我收到错误"未指定目录"。

但是,在检查 Presto Web 界面 (http://ec2-aaa-bbb-ccc-ddd.eee.compute.amazonaws.com:8889/query.html?20170130_165412_00329_5gbba) 上提供的 java 错误的跟踪时,我收到以下错误。它看起来更像是一个解析错误。

com.facebook.presto.sql.parser.ParsingException: line 1:1: no viable alternative at input '{'
    at com.facebook.presto.sql.parser.SqlParser$1.syntaxError(SqlParser.java:45)
    at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:65)
    ... 60 more

提交的查询如下:

{"query":"select * from "hive.poc"."information_schema"."tables" WHERE table_schema LIKE 'default' AND table_name LIKE '*'","preparedStatements":{}}

任何帮助/提示将不胜感激。

注意:在 EMR 集群中,presto 服务器在端口 8889 中可用,而不是在通常的 8080 中可用。

谢谢!

发生这种情况是因为 Tableau 使用的是 Teradata 驱动程序(至少 Tableau 网站告诉您安装这些驱动程序)。驱动程序的1.1.8版本仅与Presto 0.157t(即Teradata版本0.157)兼容。

这是导致您看到的错误的特定拉取请求:https://github.com/prestodb/presto/pull/5868。一个解决方案可能是在 EMR 上安装 0.157t,但这需要比在 EMR 上启动集群时简单地检查 Presto 框更多的工作。

修复拉取请求 5868 引入的问题的解决方法:

在 aws emr 命令中添加 --configurations 标志并指向本地 json 文件。例如:

aws emr create-cluster [...] --configurations file://./clusterConfiguration.json 

clusterConfiguration.json 的内容是:

{
  "Classification": "presto-config",
  "Properties": {
    "presto.version": "0.148"
  }
}

这会将 presto 的已发布版本设置为 0.148。这是由 Teradata 驱动程序拾取的,然后使用 0.157 预期的旧有效负载。

默认情况下,EMR 上的 Presto 使用 Hive 作为其目录。尝试使用这样的命令进入presto-cli presto-cli --catalog Hive

然后,您应该能够访问所有表。此外,在 Tableau 中,您可能必须将配置单元定义为目录。

我也有同样的问题。

使用 rest-client ,我将提交的查询更改为仅 SQL 语句,没有 json 信封,并且它起作用了。它不能解决问题,但它提供了解决方案的提示。

相关内容

  • 没有找到相关文章

最新更新