【问题标题】:MapReduce error when selecting column from JSON file in Cosmos从 Cosmos 中的 JSON 文件中选择列时出现 MapReduce 错误
【发布时间】:2014-09-21 08:35:52
【问题描述】:

问题如下:

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

如何避免这个问题?

【问题讨论】:

    标签: json csv hadoop hive fiware-cygnus


    【解决方案1】:

    您只需将 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      相关资源
      最近更新 更多