在猪 0.16 中加载 json 数据时,大象鸟不存在错误

Posted

技术标签:

【中文标题】在猪 0.16 中加载 json 数据时,大象鸟不存在错误【英文标题】:elephant bird does not exist error while loading json data in pig 0.16 【发布时间】:2018-02-22 17:24:59 【问题描述】:

谁能帮我弄清楚为什么我在使用 REGISTER 注册 jar 文件“象鸟”以加载 json 数据时出错:

我在猪 0.16 的本地模式下工作并得到错误: /home/shanky/Downloads/elephant-bird-hadoop-compat-4.1.jar' 不存在。 /home/shanky/Downloads/elephant-bird-pig-4.1.jar' 不存在。

加载json数据的代码:

REGISTER '/home/shanky/elephant-bird-hadoop-compat-4.1.jar';
REGISTER '/home/shanky/Downloads/elephant-bird-pig-4.1.jar';
REGISTER '/home/shanky/Downloads/json-simple-1.1.1.jar';
load_tweets = LOAD '/home/shanky/Downloads/data.json' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS myMap;
dump load_tweets;

我尝试通过删除引号并放置 hdfs:// 来替换 REGISTER 语句,但对我没有任何作用。

【问题讨论】:

【参考方案1】:

根据 pig 文档 (https://pig.apache.org/docs/r0.16.0/basic.html#register-jar),不应包含引号,但您的语法确实对我有用(尽管我使用的是 0.12.0-cdh5.12.0)。

既然你说你试过不带引号,一些想法:

*您提到尝试添加 hdfs://,这些对 hdfs 的依赖是否有任何机会?看起来不像,因为它们在路径中有下载,但如果它们是,您将无法找到它们在本地模式下运行 pig。如果它们在您的本地文件系统上,则无论您是否在本地运行它,您都应该能够使用您拥有的路径访问它们。

*文件真的存在吗?权限是否正确?等等。

*假设您现在只想解决这个问题,您是否尝试过任何其他注册 jar 的方法,例如 -Dpig.additional.jars.uris=/home/shanky/elephant-bird-hadoop -compat-4.1.jar,/home/shanky/Downloads/elephant-bird-pig-4.1.jar

【讨论】:

以上是关于在猪 0.16 中加载 json 数据时,大象鸟不存在错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在猪中加载由 :: 分隔的数据

尝试在猪中加载文件,但每次都会出现此问题。警告 IMPLICIT_CAST_TO_FLOAT 2 次

我无法在片段中加载数据 json

如何使用 JSON API 在滚动时在 recyclerview 中加载更多数据

在滚动时在 recyclerview 中加载更多数据

在 ExtJS4 TreeGrid 中加载嵌套的 JSON 数据