问题标签 [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.
hadoop - 从象鸟中写入可以被 ProtobufPigLoader 读取的数据
对于我的一个项目,我想分析大约 2 TB 的Protobuf对象。我想通过“象鸟”库在猪脚本中使用这些对象。但是,我并不完全清楚如何将文件写入 HDFS,以便 ProtobufPigLoader 类可以使用它。
这就是我所拥有的:
猪脚本:
导入工具(部分):
导入工具运行良好。我在使用 ProtobufPigLoader 时遇到了一些问题,因为我无法使用 hadoop-lzo 压缩库,并且没有修复(请参阅此处)ProtobufPigLoader 无法正常工作。我遇到的问题是DUMP raw_data;
返回Unable to open iterator for alias raw_data
和ILLUSTRATE raw_data;
返回No (valid) input data found!
。
对我来说,ProtobufPigLoader 似乎无法读取 ProtobufBlockWriter 数据。但是用什么代替呢?如何将外部工具中的数据写入 HDFS,以便 ProtobufPigLoader 对其进行处理。
替代问题:改用什么?如何将相当大的对象写入 Hadoop 以使用 Pig 使用它?对象不是很复杂,但在列表中包含大量子对象(Protobuf 中的重复字段)。
- 我想避免使用任何文本格式或 JSON,因为它们对于我的数据来说太大了。我希望它会使数据膨胀 2 或 3 倍(很多整数,很多我需要编码为 Base64 的字节字符串)..
- 我想避免对数据进行规范化,以便将主对象的 id 附加到每个子对象(这是现在所做的),因为这也会增加空间消耗并使后续处理中需要连接。
更新:
- 我没有使用protobuf loader类的生成,而是使用反射类型的loader
- protobuf 类位于已注册的 jar 中。
DESCRIBE
正确显示类型。
java - JSON 对象跨越多行,如何在 Hadoop 中拆分输入
我需要摄取大型 JSON 文件,其记录可能跨越多行(不是文件)(完全取决于数据提供者的编写方式)。
Elephant-Bird 采用 LZO 压缩,我知道数据提供者不会这样做。
Dzone 文章http://java.dzone.com/articles/hadoop-practice假设 JSON 记录将位于同一行。
任何想法,除了压缩 JSON... 文件将是巨大的... 关于如何正确拆分文件以使 JSON 不会中断。
编辑:行,而不是文件
apache-pig - ElephantBird 包构建失败:
我下载了 ElephantBird 源代码并尝试通过运行“mvn package”进行构建,但出现以下错误:
我使用的是 mvn 版本 3.0.3,我在 Mac 和 Ubuntu 中尝试过,但我得到了同样的错误。
编辑1:
感谢 Lorand 的评论,我通过升级协议缓冲区解决了上述问题。我还安装了 Thrift 0.7.0,但现在在大象猪构建期间我遇到了另一个编译失败:
hadoop - 大象鸟编译失败:缺少 hadoop-compat/target/classes 目录
我正在尝试使用 ElephantBird 向 Pig 添加序列文件存储功能。我已经从 GitHub 克隆了 ElephantBird 包,但是当我尝试使用 编译时mvn package
,出现以下错误:
我不明白发生了什么,因为我没有编辑过任何目录。我刚刚按照ElephantBird 自述文件的 QuickStart 下列出的前 2 条说明进行操作。我检查了问题日志,其他人似乎没有发生这种情况。为什么是我?
hadoop - 从 HDFS 加载数据不适用于 Elephantbird
我正在尝试用猪中的大象鸟处理数据,但我没有成功加载数据。这是我的猪脚本:
我得到的输出是
该文件存在并且可以访问:
这似乎是 Cloudera 4.6.0 附带的猪版本的普遍问题:问题似乎是说
运行另一个用户定义的函数来加载数据时,我遇到了类似的错误:
当我强制猪进入本地模式(''-x local'')时,我得到更明显的错误
所以我猜,Hadoop pig 使用的版本似乎与 Cloudera 附带的版本不兼容。
hadoop - 尝试使用 LzoPigStorage 和大象鸟加载索引 LZO 文件
我有一个默认 LZO 压缩的日志文件和一个使用 Hadoop-LZO 生成的 .index 文件,但是当我运行一个简单的 Pig 文件以使用 LzoPigStorage 检索前 100 条记录时,我得到以下异常:
我正在运行 Hadoop 2.0、Pig 0.11 和大象鸟 2.2.3
thrift - 象鸟构建失败
因为我想用象鸟在 PIG 中读/写 JSON 文件,所以下载了 EB for Mac
并尝试使用
并且构建失败如下,
我已经检查了这个链接ElephantBird package build failure:并下载了 thrift 0.9 并尝试在 pom.xml 中指定绝对路径
请就如何运行它提出任何建议。
hadoop - Pig Elephant-Bird 找到接口 org.apache.hadoop.mapreduce.JobContext,但预期类
我正在使用 CDH4 运行 Hadoop 2.0,并使用 Oracle Java 1.6 r31 构建了大象鸟库
我的猪脚本:
结果:
apache-pig - 象鸟猪 TypeRef ClassNotFoundException
我正在尝试使用大象鸟 4.1 将协议缓冲区中编码的数据处理为其猪表示。相关猪代码:
每当我尝试进行转换时,它都会因以下堆栈跟踪而惨遭失败:
我怀疑这可能与包含适当的罐子有关,据我所知,这些依赖项应该在大象鸟核心中。
java - 构建象鸟时出错
我正在尝试构建 Twitter 的大象鸟包,以便可以将其与 Pig 一起使用,但出现错误:
这是我的系统的 Maven 信息:
我已经安装了 Thrift 和 protobuf。
编辑按照 Jigar 的建议,我修复了这里遇到的第一个与 protobuf 版本有关的构建错误。我还更新了导致错误的 pom 文件中的 Thrift 版本号。但我仍然收到以下错误: