【问题标题】:Load JSON file in Pig script inside Hortonworks Sandbox在 Hortonworks Sandbox 内的 Pig 脚本中加载 JSON 文件
【发布时间】:2013-11-05 20:36:00
【问题描述】:

我是 Hadoop/Hortonworks/Pig 的新手,所以请原谅我的问题。

我已经安装了 Hortonworks 沙盒。我正在尝试加载一个 twitter JSON 文件并对文件执行一些查询,但我目前卡在加载文件部分。

我知道我应该使用 Elephant-bird 来使用 JsonLoader() 加载 JSON 文件(不指定 JSON 模式),所以我已经从 git repo 下载了 Elephant-bird 并且我已经包含jar文件

Elephant-bird\repo\com\twitter\elephant-bird\2.2.3\elephant-bird-2.2.3.jar

在 Hortonworks 沙盒内。这是我的 Pig 脚本的屏幕截图:

REGISTER elephant-bird-2.2.3.jar;
Json1 = LOAD 'JSON/sample.tweets' JsonLoader();
DESCRIBE Json1;
STORE Json1 INTO 'tweeterOutput';

很遗憾,我无法从此脚本执行中获得任何结果。我试过STOREDUMP 命令。

可能我在这个流程中做了很多错误的事情,所以任何帮助都将不胜感激!

【问题讨论】:

    标签: json hadoop apache-pig hortonworks-data-platform


    【解决方案1】:

    您缺少USING 关键字:

    Json1 = LOAD 'JSON/sample.tweets' USING JsonLoader();
    

    【讨论】:

    • 感谢您的回答!显然这不是我的代码中唯一的错误,因为它仍然无法正常工作:(
    • 您需要完全限定路径吗? com.twitter.elephantbird.pig.load.JsonLoader();
    • 我也尝试过添加此路径。使用DUMP 时,仍然没有任何输出显示。奇怪的是,如果我转到 Job Browser,它会说作业已成功完成。即使下面有一条红线。
    【解决方案2】:

    修复以下问题

    1. 您需要再添加几个罐子:elephant-bird-core-4.4.jar、elephant-bird-pig-4.4.jar、elephant-bird-hadoop-compat-4.4.jar、json-simple-1.1.1 .jar
    2. 将它们全部注册到脚本中

      注册elephant-bird-core-4.4.jar;

      注册大象鸟猪4.4.jar;

      注册大象-鸟-hadoop-compat-4.4.jar;

      注册 json-simple-1.1.1.jar;

    3. 使用 com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') 加载“JSON/sample.tweets”;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多