在 Hortonworks Sandbox 内的 Pig 脚本中加载 JSON 文件

Posted

技术标签:

【中文标题】在 Hortonworks Sandbox 内的 Pig 脚本中加载 JSON 文件【英文标题】:Load JSON file in Pig script inside Hortonworks Sandbox 【发布时间】: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 命令。

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

【问题讨论】:

【参考方案1】:

您缺少USING 关键字:

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

【讨论】:

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

修复以下问题

    您需要再添加几个罐子: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

    将它们全部注册到脚本中

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

    注册大象鸟猪4.4.jar;

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

    注册 json-simple-1.1.1.jar;

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

【讨论】:

以上是关于在 Hortonworks Sandbox 内的 Pig 脚本中加载 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

Hortonworks 沙箱 - 无法启动,因为 ambari-qa-Sandbox@DOMAIN.COM 应该是 ambari-qa-sandbox@DOMAIN.COM

从外部在 Hortonworks Sandbox 上执行 Spark 作业

通过 Hortonworks Sandbox 上的 sqoop 连接到 Oracle

无法从主机连接到 ZooKeeper/Hive 到 Sandbox Hortonworks HDP VM

无法将数据加载到 Pig 中的 Hortonworks Sandbox

Pig 未将数据加载到 HCatalog 表中 - HortonWorks Sandbox [关闭]