2

问题如下:

使用 Cygnus 0.2.1 创建表后,尝试从 Hive 中选择列时收到 MapReduce 错误。如果我们看到 Cygnus 在 hadoop 中创建的文件,我们可以看到使用的格式是 JSON。这个问题没有出现在以前版本的 Cygnus 中,因为它正在创建 CSV 格式的 hadoop 文件。

为了测试它,我留下了从每种格式创建的 2 个表。您可以使用以下查询比较并查看错误:

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 格式按预期工作。

如何避免这个问题?

4

1 回答 1

0

您只需将Json serde添加到 Hive 类路径。作为非特权用户,您可以从 Hive CLI 执行此操作:

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

如果您开发了远程 Hive 客户端,则可以执行与任何其他查询执行相同的操作。假设您正在使用 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();
于 2014-08-01T07:51:54.270 回答