2015-12-07 15 views
0

我有Hive表格指向JSON文件作为内容,这些表格需要JSON SerDe jar(从here)以查询表格。在我的主持的Hadoop发行版的机器(或VM),我可以简单地在蜂巢或直线CLI执行:在SparkSQL Thrift服务器上添加Hive SerDe jar

ADD JAR /<local-path>/json-serde-1.0.jar; 

,然后我可以在我的蜂巢表执行SELECT查询。

我需要将这些Hive表用作我的Tableau(安装在Windows,我的主机中)的数据源,因此我启动了Spark中的Thrift服务器。

对于不包含JSON(并且不需要SerDe)的Hive表,Tableau可以轻松地连接和读取表。

当涉及到包含JSON数据的蜂巢表,但是,它看起来像的Tableau找不到蜂巢JSON SERDE罐子,我得到以下错误:

'java.lang.RuntimeException: MetaException(message:java.lang.ClassNotFoundException Class org.openx.data.jsonserde.JsonSerDe not found)'. 

如何添加蜂房JSON SerDe jar,以便Tableau可以读取Hive JSON表?

回答

1

我猜你正在使用jdbc将画面连接到配置单元。

当使用hive shell时,hive将捆绑来自hive客户端的所有需要​​的库(包括SerDe),并构建一个在集群上分发和执行的jar。不幸的是,jdbc服务器没有这样做,所以你必须在所有节点上手动安装和配置SerDe,并将它放在所有map/reduce节点的类路径中(将jar复制到所有节点和添加如HADOOP_CLASSSPATH=$HADOOP_CLASSPATH:/location/of/your/serde.jar)。 之后可能需要重新启动纱线。 这是相当不方便的,但这就是jdbc驱动程序的工作原理。

请参阅https://issues.apache.org/jira/browse/HIVE-5275

+0

感谢您的帮助。我正在使用ODBC。特别是Databricks的Simba Spark ODBC驱动程序。 ODBC的过程是否相同? – menorah84

+0

是的,它应该是相同的程序。 –