问题标签 [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 投票
0 回答
727 浏览

json - Pig:将字节数组解析为字符串/json

我有一些 json 数据格式以 SequenceFile 格式保存到 S3 中secor。我想用 Pig 来分析它。使用elephant-bird我设法以bytearray格式从 S3 获取它,但我无法将其转换为chararray,这显然是解析 Json 所必需的:

使用TextConverterinsted of the BytesWritableConverterjust 会给我留下空值,例如:

很明显,Pig 能够将字节数组转换为字符串来转储它,所以这似乎不是不可能的。我怎么做?

0 投票
1 回答
2389 浏览

hadoop - PIG 脚本错误:java.lang.NoSuchMethodError:org.apache.thrift.protocol.TProtocol.getScheme

我在 mapreduce 模式下运行 PIG 脚本。该脚本读取 RCFile(包含以 GZIP 压缩格式存储的 Thrift 序列化数据),使用 UDF 对其进行反序列化,从 Thrift 结构中提取某些字段并存储它们。

一些映射器失败并出现以下错误:

这是我的脚本:

我正在使用 libthrift-0.8.0.jar,其中 TProtocol.java 类确实定义了 getScheme() 方法(具有公共访问权限)。有趣的是,并不是所有的映射器都失败了,只有少数失败了;但这导致我的工作失败。这可能是 CLASSPATH 问题吗?

我尝试搜索此问题,但找不到相关答案。有人可以帮我找到一些线索来解决这个问题吗?

0 投票
0 回答
59 浏览

hadoop - 大象鸟猪:构建错误

我正在尝试构建大象鸟猪,但出现以下问题时出错:

知道如何克服这个问题吗?

0 投票
1 回答
96 浏览

maven - 如何为 thrift 0.9.1 构建 twitter 的大象鸟?

大象鸟的自述文件提到:

Thrift 0.5.0、0.6.0、0.7.0,大于 0.9 的版本通过 thrift9 maven 配置文件提供

我正在使用mvn package -e -Dprotobuf.version=2.6.1 -Dthrift.version=0.9.1,但它给了我错误:

我是否必须安装 thrift 0.7.0 才能使其正常工作,还是有一些我不知道的方法?

0 投票
1 回答
170 浏览

java - 如何使用 Pig 检查 JSON 中缺少的密钥?

我有一个具有不同架构的 JSON 文件。

为此,我编写了一个 pig 脚本,该脚本利用twitter 的大象鸟库来加载 JSON 数据并将其转换为制表符分隔的文件。

但是,如果输入 JSON 文件中的一行缺少“title”键(上例中的第 2 行),则 tvs 文件也没有任何内容可以代替它,例如:

如果缺少特定键,我想提供自定义默认值。如何使用 PigLatin 做到这一点?

预期输出:

这是我的脚本:

0 投票
1 回答
587 浏览

json - 无法在 Pig 中使用 Elephant Bird 访问带有包和元组的嵌套 JSON

我正在尝试使用 Pig 中的 Elephant Bird 解析一个嵌套的 JSON 对象,该对象的级别可以包含包和/或元组。在第四层引用列会导致一些奇怪的行为。

Pig 在引用第四个或以下的列时出现问题。似乎是因为数据在包、元组和映射之间做了一些交替。需要明确的是,看起来 JsonLoader 将一些转换为地图,但其他则没有。例如,参见下面对“五”的引用。

HDP版本:2.1.2,猪版本:0.12.1,象鸟版本:4.13

这是结构的示例数据,其中键和值替换为占位符。

猪声明:

运行dump b;结果:

这一切看起来都符合预期,但是:

但是现在,运行dump c;不会返回上述任何数据。

省略模式描述也是如此

引用更深的级别会产生错误:

我应该如何参考五级和六级?我的最终目标是能够引用eight_ideight_score展平seven数组/包的元素

0 投票
1 回答
48 浏览

apache-pig - 使用大象鸟加载 json - 简单任务出错

我无法简单地加载数据进行测试和分析。我在用着

https://www.reddit.com/r/datasets/comments/3oiv9z/reddit_september_comment_archive_is_now_available/

在使用从该文件中仅获取 10000 行之后,我尝试将它们加载到猪中。

甚至像这样简单的返回错误。

错误代码:

主类[org.apache.oozie.action.hadoop.PigMain],退出代码[2]

0 投票
1 回答
1806 浏览

json - 错误 1066:无法打开别名的迭代器 - PIG SCRIPT

我长期以来一直面临这个问题。我试图解决这个问题,但我做不到。我需要一些专家的建议来解决这个问题。

我正在尝试加载示例推文 json 文件。

示例.json;-

我尝试使用ELEPHANT BIRD加载此 json 文件

脚本:-

输出:-

但是当我尝试DUMP B时,发生了以下错误

错误 org.apache.pig.tools.grunt.Grunt - 错误 1066:无法打开别名 B 的迭代器

我在这里提供完整的日志。

199 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - 设置单一存储作业 2016-09-11 14:07:57,199 [main] INFO org.apache.pig.data.SchemaTupleFrontend - Key [pig.schematuple] 为 false,不会生成代码。2016-09-11 14:07:57,199 [main] INFO org.apache.pig.data.SchemaTupleFrontend - 将生成的代码移动到分布式缓存的启动过程 2016-09-11 14:07:57,199 [main] INFO org.apache .pig.data.SchemaTupleFrontend - 本地模式不支持或不需要分布式缓存。使用代码临时目录设置键 [pig.schematuple.local.dir]:/tmp/1473583077199-0 2016-09-11 14:07:57,206 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer。 MapReduceLauncher - 1 个 map-reduce 作业等待提交。2016-09-11 14:07:57,207 [JobControl] 信息 org.apache。警告 org.apache.hadoop.mapreduce.JobResourceUploader - 没有设置作业 jar 文件。可能找不到用户类。请参阅 Job 或 Job#setJar(String)。2016-09-11 14:07:57,211 [JobControl] INFO org.apache.hadoop.mapreduce.lib.input.FileInputFormat - 处理的总输入路径:1 2016-09-11 14:07:57,211 [JobControl] INFO org .apache.pig.backend.hadoop.executionengine.util.MapRedUtil - 处理的总输入路径(组合):1 2016-09-11 14:07:57,212 [JobControl] INFO org.apache.hadoop.mapreduce.JobSubmitter - number拆分次数:1 2016-09-11 14:07:57,216 [JobControl] INFO org.apache.hadoop.mapreduce.JobSubmitter - 提交作业令牌:job_local360376249_0009 2016-09-11 14:07:57,267 [JobControl] INFO org. apache.hadoop.mapreduce.Job - 跟踪作业的 url: http://localhost:8080/288 [LocalJobRunner Map Task Executor #0] INFO org.apache.pig.data.SchemaTupleBackend - 键 [pig.schematuple] 未设置...不会生成代码。2016-09-11 14:07:57,290 [LocalJobRunner Map Task Executor #0] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigMapOnly$Map - 每个作业阶段处理的别名(AliasName[line,offset] ): M: twitter[20,10],B[21,4] C: R: 2016-09-11 14:07:57,291 [Thread-214] INFO org.apache.hadoop.mapred.LocalJobRunner - 映射任务执行器完全的。2016-09-11 14:07:57,296 [线程 214] PigMapOnly$Map - 每个作业阶段处理的别名(AliasName[line,offset]):M: twitter[20,10],B[21,4] C: R: 2016-09-11 14:07:57,291 [Thread -214] INFO org.apache.hadoop.mapred.LocalJobRunner - 映射任务执行器完成。2016-09-11 14:07:57,296 [线程 214] PigMapOnly$Map - 每个作业阶段处理的别名(AliasName[line,offset]):M: twitter[20,10],B[21,4] C: R: 2016-09-11 14:07:57,291 [Thread -214] INFO org.apache.hadoop.mapred.LocalJobRunner - 映射任务执行器完成。2016-09-11 14:07:57,296 [线程 214]警告 org.apache.hadoop.mapred.LocalJobRunner - job_local360376249_0009 java.lang.Exception: java.lang.IncompatibleClassChangeError: 找到接口 org.apache.hadoop.mapreduce.Counter,但在 org.apache.hadoop.mapred.LocalJobRunner 上应该有类$Job.runTasks(LocalJobRunner.java:462) 在 org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522) 引起:java.lang.IncompatibleClassChangeError:找到接口 org.apache.hadoop.mapreduce.Counter,但在 com.twitter 上应该有类.elephantbird.pig.util.PigCounterHelper.incrCounter(PigCounterHelper.java:55) 在 com.twitter.elephantbird.pig.load.LzoBaseLoadFunc.incrCounter(LzoBaseLoadFunc.java:70) 在 com.twitter.elephantbird.pig.load.JsonLoader .getNext(JsonLoader.java:130) 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:204) 在 org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask .java:556) 在 org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context 的 org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)。nextKeyValue(WrappedMapper.java:91) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787) at org.apache .hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243) at java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$ Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 2016-09-11 14:07:57,467 [main] INFO org.apache.pig.backend.hadoop.executionengine .mapReduceLayer.MapReduceLauncher - HadoopJobId:job_local360376249_0009 2016-09-11 14:07:57,467 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 处理别名 B,twitter 2016-09-11 14:07:57,467 [main] INFO org.apache.pig.backend.hadoop。 executionengine.mapReduceLayer.MapReduceLauncher - 详细位置:M: twitter[20,10],B[21,4] C: R: 2016-09-11 14:07:57,468 [main] INFO org.apache.pig.backend。 hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 0% 完成 2016-09-11 14:07:57,468 [主要]mapReduceLayer.MapReduceLauncher - 0% 完成 2016-09-11 14:07:57,468 [main]mapReduceLayer.MapReduceLauncher - 0% 完成 2016-09-11 14:07:57,468 [main]警告 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 哎呀!有些工作失败了!如果您希望 Pig 在失败时立即停止,请指定 -stop_on_failure。2016-09-11 14:07:57,468 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 作业 job_local360376249_0009 失败了!停止运行所有相关作业 2016-09-11 14:07:57,468 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 100% 完成 2016-09-11 14:07:57,469 [main ] INFO org.apache.hadoop.metrics.jvm.JvmMetrics - 无法使用 processName=JobTracker,sessionId= 初始化 JVM 指标 - 已经初始化 2016-09-11 14:07:57,469 [main] INFO org.apache.hadoop.metrics。 jvm.JvmMetrics - 无法使用 processName=JobTracker、sessionId= 初始化 JVM 指标 - 已初始化 2016-09-11 14:07:57,469 [main] 错误 org.apache.pig.tools.pigstats.mapreduce.MRPigStatsUtil - 1 个 map reduce 作业(s) 失败了!2016-09-11 14:07:57,470 [主要] 信息 org.apache.pig。tools.pigstats.mapreduce.SimplePigStats - 脚本统计:HadoopVersionPigVersionUserIdStartedAtFinishedAtFeatures 2.7.1.2.3.4.7-40.15.0.2.3.4.7-4root2016-09-11 14:07:572016-09-11 14:07:57UNKNOWN 失败!作业失败:JobIdAliasFeatureMessageOutputs job_local360376249_0009B,twitterMAP_ONLYMessage:作业失败!文件:/tmp/temp252944192/tmp-470484503,输入:无法从“file:///root/PIG/PIG/sample.json”读取数据输出( s):无法在“file:/tmp/temp252944192/tmp-470484503”中产生结果计数器:写入的总记录:0 写入的总字节数:0 Spillable Memory Manager 溢出计数:0 主动溢出的包总数:0 主动溢出的总记录: 0 工作 DAG:job_local360376249_0009 HadoopVersionPigVersionUserIdStartedAtFinishedAtFeatures 2.7.1.2.3.4.7-40.15.0.2.3.4.7-4root2016-09-11 14:07:572016-09-11 14:07:57UNKNOWN 失败!作业失败:JobIdAliasFeatureMessageOutputs job_local360376249_0009B,twitterMAP_ONLYMessage:作业失败!文件:/tmp/temp252944192/tmp-470484503,输入:无法从“file:///root/PIG/PIG/sample.json”读取数据输出( s):无法在“file:/tmp/temp252944192/tmp-470484503”中产生结果计数器:写入的总记录:0 写入的总字节数:0 Spillable Memory Manager 溢出计数:0 主动溢出的包总数:0 主动溢出的总记录: 0 工作 DAG:job_local360376249_0009 HadoopVersionPigVersionUserIdStartedAtFinishedAtFeatures 2.7.1.2.3.4.7-40.15.0.2.3.4.7-4root2016-09-11 14:07:572016-09-11 14:07:57UNKNOWN 失败!作业失败:JobIdAliasFeatureMessageOutputs job_local360376249_0009B,twitterMAP_ONLYMessage:作业失败!文件:/tmp/temp252944192/tmp-470484503,输入:无法从“file:///root/PIG/PIG/sample.json”读取数据输出( s):无法在“file:/tmp/temp252944192/tmp-470484503”中产生结果计数器:写入的总记录:0 写入的总字节数:0 Spillable Memory Manager 溢出计数:0 主动溢出的包总数:0 主动溢出的总记录: 0 工作 DAG:job_local360376249_0009

并请说明如何使用 jar 文件,

以及要使用的版本是什么。我很困惑要使用哪个版本。

有人说用象鸟,有人说用 AVRO。但我和他们都没有工作。

请帮忙。

莫汉

0 投票
1 回答
522 浏览

hadoop - Hive 协议缓冲区 - 在 Hive 中创建表时出现 NullPointerException

提前致谢。

目前我们正在尝试使用 Protocol Buffers 字节数据创建 Hive 表。我们已经遵循了使用协议缓冲区创建 Hive 表的所有可能步骤,但是NullPointerException在创建 Hive 表时获取。以下是所有必需的详细信息。

版本 -
1. protoc 3.0.0
2. 大象鸟 - 4.14
3. Hortornworks Sandbox Hive 版本 - 1.2.1
4. Protobuf-java 3.0.0

使用的 proto 文件是

我们正在使用以下命令创建 Java 类

上述命令为输入协议缓冲区文件生成 Java 类。

在此之后,我们将此协议缓冲区 java 文件复制到一个 maven java 项目,然后创建 JAR 文件。我们将 JAR 文件复制到 hive lib 路径中,即“/usr/hdp/current/hive-client/lib”。

下面是创建表命令

该位置中存在的输入文件作为序列文件存储在 HDFS 中。
执行此命令后出现异常。

任何与此相关的帮助表示赞赏。

再次感谢。

阿维纳什·德什穆赫

0 投票
0 回答
175 浏览

installation - Twitter 象鸟安装

我正在尝试安装 twitter 的 Elephant Bird 解析器,我正在按照官方 github 页面上的说明进行操作。但是每次构建都会失败。我什至不确定我是否做对了,因为我每次构建时,都会出现一个错误,上面写着:

我真的很困惑如何安装 protobufs。它有不同的语言,我不确定我需要选择哪种语言。它说的是动态安装。3天的工作一无所获。

有人可以指导我完成所有安装步骤(以及先决条件的安装过程)。请理解我对 linux 太天真和新手。非常感谢您的帮助。

我正在使用centos 7。

编辑:

  1. 我使用此链接安装 protobuf 2.4.1。
  2. mvn -Dmaven.test.skip=true package在大象鸟目录中。

我得到:

我不知道该怎么办。有人能帮我吗?