在 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';
很遗憾,我无法从此脚本执行中获得任何结果。我试过STORE
和DUMP
命令。
可能我在这个流程中做了很多错误的事情,所以任何帮助都将不胜感激!
【问题讨论】:
【参考方案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