我无法将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.
谢谢!
答案 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信封,并且它有效。它没有解决问题,但它提供了一个解决方案的提示。