mapreduce在cosmos中从json文件中选择列时出错

bksxznpy  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(305)

问题如下:
在用cygnus0.2.1创建了一个表之后,我在尝试从配置单元中选择列时收到一个mapreduce错误。如果我们看到cygnus在hadoop中创建的文件,我们可以看到使用的格式是json。这个问题并没有出现在以前版本的cygnus中,因为它正在以csv格式创建hadoop文件。
为了测试它,我留下了两个从每种格式读取的表。您可以通过以下查询比较并查看错误:

SELECT entitytype FROM fiware_ports_meteo; (it fails, created with 0.2.1 in JSON format)
SELECT entitytype FROM fiware_test_table; (it works, created with 0.2 in CSV format)

hdfs文件的路径分别为:

/user/fiware/ports/meteo
/user/fiware/testTable/

我怀疑这个错误来自mapreduce作业解析json文件,因为csv格式按预期工作。
如何避免这个问题?

qyzbxkaa

qyzbxkaa1#

您只需将json serde添加到配置单元类路径。作为非特权用户,可以通过配置单元cli执行以下操作:

hive> ADD JAR /usr/local/hive-0.9.0-shark-0.8.0-bin/lib/json-serde-1.1.9.3-SNAPSHOT.jar;

如果已经开发了远程配置单元客户端,则可以执行与任何其他查询执行相同的操作。假设您使用的是java:

Statement stmt = con.createStatement();
stmt.executeQuery(“ADD JAR /usr/local/hive-0.9.0-shark-0.8.0-bin/lib/json-serde-1.1.9.3-SNAPSHOT.jar”);
stmt.close();

相关问题