问题标签 [elephantbird]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
240 浏览

json - Pig:使用实际的 key_name 和值创建 json 文件

我有一个使用大象鸟 json 加载器的猪脚本。

我的输出正确,但字段名称错误。

我的输出已经val_n替换了字段名称本身:

我想要类似的东西:

我怎样才能得到列名呢?

0 投票
0 回答
68 浏览

apache-pig - 如何使用 Elephant-Bird 读取多消息流、未压缩的 Protobuf 文件?

我有一堆未压缩的 protobuf 二进制日志文件 (*.binlog)。除了未压缩之外,每个文件/流还包含可变数量的消息。

我正在尝试将这些文件加载​​到 HDFS 并使用 Pig 查询它们。

我的问题是:

是否可以使用 Elephant-Bird 读取未压缩的文件?我也尝试过读取 bzip2 编码的文件,但到目前为止我的尝试给了我Failed to read from file错误

我正在努力

加载函数返回没有错误但是当我说

猪堆栈跟踪

ERROR 1066:无法打开别名值的迭代器

org.apache.pig.impl.logicalLayer.FrontendException: 错误 1066: 无法在 org.apache.pig.PigServer.openIterator(PigServer.java:892) 在 org.apache.pig.tools.grunt 打开别名 person_phone_numbers 的迭代器。 GruntParser.processDump(GruntParser.java:774) 在 org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372) 在 org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser. java:198) 在 org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69) 在 org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:173) 在 org.apache .pig.Main.run(Main.java:541) 在 org.apache.pig.Main.main(Main.java:156) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) 在 sun.reflect。DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache .hadoop.util.RunJar.main(RunJar.java:136) 原因:java.io.IOException:作业在 org.apache.pig.PigServer.openIterator(PigServer.java:884) 处以异常状态 FAILED 终止 ...还有 13 个

不,如果这可能的话,有人会给出提示吗?如何ProtobufPigLoader在阅读消息之前直接阅读消息长度?

0 投票
2 回答
88 浏览

json - Pig Job 使用 Elephant Bird jsonLoader 时挂起

这是延续到这个

我的新猪脚本是:

此代码在本地模式下工作:pig -x local user_posts.pig

但它在 mapreduce 模式下失败:pig -x mapreduce user_posts.pig

我将罐子移动到完全相同位置的所有数据节点。我不知道在哪里可以检查。有人可以指点一下吗?

0 投票
1 回答
1166 浏览

json - 在 Pig 中解析复杂的嵌套 JSON

我想将亿万富翁 JSON 数据集解析为 Pig。可以在此处找到 JSON 文件。

以下是每个条目的内容:

尝试 1

我尝试在 grunt 中使用以下命令加载这些数据:

亿万富翁 = LOAD 'billionaires.json' USING JsonLoader('wealth: (价值数十亿:双倍,如何:(类别:chararray,来自新兴:chararray,行业:chararray,是政治:chararray,继承:chararray,是创始人:chararray ), type:chararray), company: (sector:chararray,founded:int,type:chararray,name:chararray,relationship:chararray),rank:int,location:(gdp:double,region:chararray,citizenship:chararray,国家代码:chararray),年份:int,人口统计:(性别:chararray,年龄:int),姓名:chararray');

然而,这给了我错误:

错误 org.apache.pig.tools.grunt.Grunt - 错误 1200:不匹配的输入 'in' 期望 RIGHT_PAREN

尝试 2

接下来,我尝试使用 Twitter 的大象鸟项目的加载程序,名为com.twitter.elephantbird.pig.load.JsonLoader. 是此 UDF 的代码。这就是我所做的:

现在它运行了,我没有收到任何错误!但是什么都没有显示。我得到如下输出:

输入:成功读取 0 条记录(1445335 字节)来自:“hdfs://localhost:9000/user/purak/billionaires.json”

输出:成功存储 0 条记录在:“hdfs://localhost:9000/tmp/temp-1399280624/tmp-477607570”

计数器:写入的总记录数:0 写入的总字节数:0 Spillable Memory Manager 溢出计数:0 主动溢出的总包数:0 主动溢出的总记录数:0

工作 DAG:job_1478889184960_0005

我在这里做错了什么?

0 投票
0 回答
132 浏览

json - 已注册的大象鸟仍然显示错误 2998

我注册了所有需要的 jar 文件,然后加载了两个不同的 json。两者都error 2998使用 load1_tweets 显示一个附加错误,Could not initialize class如上所示。如何解决这个错误。

在日志文件中出现以下错误:

0 投票
1 回答
295 浏览

json - 使用 Apache PIG 中的 Elephant Bird JsonLoader 加载方括号中的 JSON 数据

如果记录采用这种格式,我可以使用 Elephantbird JsonLoader 加载数据:

但实际数据格式如下:(括在方括号中)

当我尝试解析它时,它不会抛出错误,也不会提供任何有用的输出。它显示成功!读取 0 条记录,写入 0 条记录。

请建议如何处理带有方括号的数据。

以下是我对非方括号记录的语法:

请指教!提前致谢 :)

0 投票
1 回答
140 浏览

json - ElephantBird ERROR 1070:---> 类没有被读取

我的问题类似于这个未回答的问题:

[ https://stackoverflow.com/questions/42140344/elephantbird-dependency-jars][1]

我已经注册了大象鸟必须使用的所有罐子。

以下链接告诉我这些信息:1: 从 HDFS 加载数据不适用于 Elephantbird

2: 如何使用 pig 从 hdfs 加载 twitter 数据?

我收到以下错误:

错误 1070:无法使用导入解析 com.twitter.elephantbird.pig.load.JsonLoader:[, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]

任何帮助表示赞赏,我尝试了几乎所有可能的网络解决方案。

0 投票
1 回答
548 浏览

amazon-web-services - 无法在 AWS 中使用大象鸟和 Hive 反序列化 Protobuf (2.6.1) 数据

我无法使用带有 Hive 的大象鸟 4.14 反序列化其中重复字符串的 protobuf 数据。这似乎是因为重复字符串功能仅适用于 Protobuf 2.6 而不是 Protobuf 2.5。在 AWS EMR 集群中运行我的 Hive 查询时,它使用与 AWS Hive 捆绑的 Protobuf 2.5。即使在明确添加 Protobuf 2.6 jar 之后,我也无法摆脱这个错误。我想知道如何让 hive 使用我明确添加的 Protobuf 2.6 jar。

以下是使用的配置单元查询:

下面是 Protobuf 文件的格式:

下面是运行查询时抛出的运行时异常:

0 投票
1 回答
613 浏览

java - 将 protobuf 3 与 Hive 和 Elephant-Bird 一起使用

我有一个将 protobuf 写入 HDFS 的数据管道,现在我需要一种方法来查询该数据。我偶然发现了大象鸟和蜂巢,并且一直试图让这个解决方案运行一天。

以下是我采取的步骤:

1.) 安装 Hadoop 2.7.3、Hive 2.1.1 和 Protobuf 3.0.0

2.) 克隆象鸟 4.16 并构建成功

3.) 启动 hive 并添加 core、hive 和 hadoop-compat jar

4.) 为 .proto 文件生成 java 类;使用 protobuf-java-3.0.0.jar 打包并添加到 hive

5.) 将 protobuf-java-3.0.0.jar 添加到 hive

在这一切之后,我执行如下创建外部命令:

我在日志中收到这条消息:

我知道这不是真的,因为我可以列出 hive 中的 jars 并查看所有已安装的,当我展开它们时,我可以看到他们认为不存在的类。

如果我在 $HIVE_HOME/lib 下查看,我发现它正在使用 protobuf-java-2.5.0.jar。我想知道这是否是导致此错误的原因以及我纠正它的选项。

想法?

0 投票
2 回答
417 浏览

hadoop - 无法对 HDFS 支持的配置单元表进行分区

也许这是一个简单的问题,但是我很难解决这个问题。目前,我有一个伪分布式 HDFS,其中包含使用 protobuf 3.0.0 编码的记录。然后,使用 Elephant-Bird/Hive 我可以将这些数据放入 Hive 表中进行查询。我遇到的问题是对数据进行分区。

这是我正在使用的表创建语句

表已创建,当我查询表时没有收到任何运行时错误。

当我尝试按如下方式加载数据时:

我收到“OK”声明。但是,当我查询表时:

我收到以下错误:

我一直在阅读 Hive 表并看到分区列不需要是正在加载的数据的一部分。我试图对日期进行分区的原因既是为了提高性能,更重要的是,因为“LOAD DATA ...”语句在 HDFS 的目录之间移动文件。

PS 我已经证明我能够在不分区的情况下对 hive 表运行查询。

有什么想法吗 ?