无法将Tableau连接到emr上的presto

时间:2017-01-30 17:15:19

标签: tableau emr presto

我无法将Tableau连接到EMR群集上。 版本: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.

谢谢!

3 个答案:

答案 0 :(得分:1)

这是因为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预期的旧有效负载。

答案 1 :(得分:0)

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

然后你应该能够访问所有表格。同样在表格中,您可能必须将hive定义为目录。

答案 2 :(得分:0)

我也有同样的问题。

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