问题标签 [lzo]

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 投票
3 回答
4134 浏览

python - 在python中打开一个lzo文件,无需解压文件

我目前正在从事一个涉及 Twitter 数据的第三年项目。该部门为我提供了价值一个月的 Twitter 的 .lzo。最小的是 4.9gb,解压后是 29gb,所以我正在尝试打开文件并阅读。这是可能的还是我需要以这种方式解压缩和处理数据?

编辑:已尝试逐行读取并解压缩读取的行

更新:找到了一个解决方案 - 阅读 lzop -dc 的 STDOUT 就像一个魅力

0 投票
1 回答
1462 浏览

hadoop - Sqoop 导出到超过 64 MB 的 RDBMS .lzo .gz 文件加载重复项

使用 sqoop 1.3

尝试将 hdfs 输出导出到 mysql 表

加载大小超过 300MB 的未压缩文件时,一切正常

但是在加载大小为 75 MB 或 79 MB 的压缩文件(.gz 和 .lzo)时,我看到加载到表中的行数增加了一倍。当压缩文件的大小为 60MB 或更小(猜测与 64 MB 相关的块大小)时,不会发生这种情况。我在上述情况下所做的一些操作:

0 投票
1 回答
440 浏览

hadoop - 如何使用 LZO 以外的压缩处理 Hadoop Map/Reduce 中的协议缓冲区文件?

我想使用 Hadoop Map/Reduce 处理使用 LZO 以外的其他东西压缩的分隔协议缓冲区文件,例如xzgzip. Twitter 的大象鸟库似乎主要支持读取 LZO 压缩的 protobuf 文件,因此似乎不能满足我的需求。是否有现有的库或标准方法来执行此操作?

注意:正如您从我选择的压缩算法中看到的那样,解决方案没有必要使 protobuf 文件可拆分。您的答案甚至不需要指定特定的压缩算法,但应该允许至少一个我提到的那些。)

0 投票
1 回答
2045 浏览

java - 在本地运行的 Hive 包括 LZO 的本机库

我正在尝试在 OSX Mountain Lion 上本地运行 Hive,并尝试按照此处的说明进行操作:

https://github.com/twitter/hadoop-lzo

我已经编译了本机 OSX 库和 jar,但我不确定我应该如何在本地启动 Hive,以便 Hive/Hadoop 使用本机库。

我已经尝试通过 JAVA_LIBRARY_PATH 环境变量包含它,但我认为这通常只适用于 Hadoop。

当我使用 LzopCodec 运行 hive 时,例如:

运行运行 map/reduce 作业的查询时出现以下错误:

我还尝试在 Hive 脚本中设置 mapred.child.env LD_LIBRARY_PATH(不走运):

0 投票
0 回答
273 浏览

python - MapReduce 输出不是预期的完整集?

我在 python 中的单个 hadoop 伪分布式节点上运行流式 hadoop 作业,还使用 ​​hadoop-lzo 在 .lzo 压缩输入文件上生成拆分。

使用小型压缩或未压缩测试数据集时,一切都按预期工作;MapReduce 输出与简单的 'cat | 地图 | 排序 | 减少'Unix中的管道。- 输入是否被压缩。

但是,一旦我开始处理单个大型 .lzo(预索引)数据集(压缩约 40GB)并将作业拆分为多个映射器,输出看起来会被截断 - 只有前几个键值存在。

代码 + 输出如下 - 如您所见,这是测试整个过程的非常简单的计数。

来自测试数据(大型数据集的子集)的直接 unix 管道的输出;

hadoop 作业对测试数据的输出(与上述相同的测试数据)

现在,测试数据是来自真实数据集的一小部分行,所以我至少希望在针对完整数据集运行作业时在结果输出中看到上面的键。但是,我得到的是;

...根据数据集,键的数量比我预期的要少得多。

我不太担心密钥本身 - 考虑到输入数据集,可以预期这个集合,我更担心应该有更多的密钥,以千计。当我在 unix 管道中针对数据集中的前 2500 万条记录运行代码时,我得到的密钥范围约为 1 - 7000。

所以,这个输出似乎只是我实际期望的前几行,我不知道为什么。我错过了整理许多 part-0000# 文件吗?或类似的东西?这只是我在家里测试的一个单节点伪分布式hadoop,所以如果有更多的part-#文件要收集,我不知道它们可能在哪里;它们不会出现在 HDFS 的保留计数目录中。

mapper 和 reducer 代码如下 - 与许多字数示例一样有效;

objectdata_map.py

objectdata_red.py

这一切都在手动安装的 hadoop 1.1.2 上,伪分布式模式,从构建和安装 hadoop-lzo

https://github.com/kevinweil/hadoop-lzo

0 投票
1 回答
4233 浏览

hadoop - Hadoop LZO 本机库和 JAR 不可用

我从http://apache.techartifact.com/mirror/hadoop/common/hadoop-1.1.2/hadoop-1.1.2-bin.tar.gz下载了 Hadoop 1.1.2 。它的本机目录没有 LZO 本机库。

$查找~/softwares/hadoop-1.1.2/lib/native/

$

当我在本地模式下使用 PigServer 运行 PIG 脚本时,我看到以下错误

parquet.hadoop.BadConfigurationException:找不到类 com.hadoop.compression.lzo.LzoCodec

我怎样才能得到 jar 文件和本地人?

0 投票
0 回答
782 浏览

hadoop - 在 Java Hadoop 框架之外创建序列文件

我一直在尝试在 Java 框架之外为 Hadoop 生成序列文件,具体来说是 Python。有一个 python-hadoop 模块,它提供了最相似的框架来做到这一点。我已经使用它成功创建了序列文件;生成的序列文件可以复制到 HDF 并用作 Hadoop 作业的输入。LZO 和 Snappy 在我的本地 Hadoop 安装上完全配置,当我通过 Java 上的 org.apache.hadoop.io.SequenceFile.createWriter 生成正确的压缩序列文件时,我可以使用这些算法生成适当的压缩序列文件。

但是,当我尝试 LZO 或 Snappy 作为 python-hadoop 上的(块)压缩方案时,似乎没有生成有效的序列文件。我正在使用与此代码类似的方案:

https://github.com/fenriswolf/python-hadoop/blob/master/python-hadoop/hadoop/io/compress/LzoCodec.py

(我将 lzo 替换为 snappy 以进行 Snappy 压缩),并且在 python-hadoop 框架内,可以毫无错误地写入和读取这些文件。但是,在 Hadoop 上,当我将它们作为 Hadoop 输入提供时,会出现 EOF 错误:

仅当我使用 LZO 或 Snappy 时,我才始终看到此特定消息。

我怀疑 Hadoop 中的 LzoCodec 和 SnappyCodec 生成或读取的方式与 Python 在 lzo 和 snappy 中的实现方式不同,但我不确定它们应该是什么。

是否有任何原因导致在 Java Hadoop 框架之外无法正确生成具有这些压缩方案的序列文件?同样,只要我使用 Gzip、BZip2 或 Default,整个事情就可以正常工作。

0 投票
0 回答
114 浏览

hadoop - 为 Amazon EMR 手动拆分和压缩输入

我决定不使用hadoop-lzo索引我的 LZO 输入文件,而是将其简单地拆分为一个块,使用 LZO 压缩的块将接近 128MB(因为它是Amazon Distribution [1]上的默认块大小)。

提供已经拆分并压缩到接近默认 HDFS 块大小的输入是否有任何问题(从集群性能的角度来看)?

0 投票
3 回答
4248 浏览

java - 如何解压缩 lzo_deflate 文件?

我使用 LZO 来压缩减少输出。我试过这个:Kevin Weil 的 Hadoop-LZO 项目,然后LzoCodec在我的工作中使用了类:

现在压缩工作得很好。

我的问题是压缩结果是一个.lzo_deflate我无法解压缩的文件。
Lzop 实用程序似乎不支持该类型的文件。
LzopCodec应该提供一个.lzo文件,但它不起作用,但是它与LzoCodec( org.apache.hadoop.io.compress) 位于同一包中,这可能涉及兼容性问题,因为我使用旧 API (0.19) 来进行压缩。

这个问题的答案建议使用 Python 解决方案,但是我在 Java 中需要它。
我正在使用 Hadoop 1.1.2 和 Java 6。

0 投票
2 回答
1388 浏览

hadoop - hadoop:来自 lzo 压缩的自动可拆分输出

我正在设置 lzo 编解码器以用作我的 hadoop 作业中的压缩工具。我知道 lzo 具有创建可拆分文件的理想功能。但我还没有找到让 lzo 自动创建可拆分文件的方法。到目前为止,我阅读的博客都提到在作业之外使用索引器并将输出 lzo 文件作为 mapreduce 作业的输入。

我正在使用一些我不想更改基准代码的 hadoop 基准,只需在 hadoop 中使用 lzo 压缩来查看它对基准的影响。我打算使用 lzo 作为编解码器来压缩地图输出,但如果输出不可拆分,下一阶段将必须让节点中的整个压缩输出能够工作。

是否有任何 hadoop 配置选项来指示 lzo 使输出文件可拆分,从而透明地完成?