hadoop - 如何将 tarball 加载到 pig

标签 hadoop apache-pig

我有一个压缩包 (access.logs.tar.gz) 中的日志文件加载到我的 hadoop 集群中。我想知道他们是否可以直接将它加载到 pig 身上而不用解开它?

最佳答案

@ChrisWhite 的回答在技术上是正确的,您应该接受他的回答而不是我的(至少是 IMO)。

您需要使用 Hadoop 摆脱 tar.gz 文件。 Gzip 文件不可拆分,因此如果您的 gzip 文件很大,您将在映射器中看到热点。例如,如果您有一个 100gb 的 .tar.gz 文件,您将无法拆分计算。

另一方面,假设它们很小。在这种情况下,Pig 会很好地将它们收集在一起,拆分问题就会消失。这有一个缺点,即现在您正在使用 NameNode 处理大量的小文件。此外,由于文件很小,将文件重组为更合理的格式在计算上应该相对便宜。

那么您应该将文件重新格式化为什么格式?好问题!

  • 只是将它们全部连接成一个大的 block 级压缩 序列文件可能是最具挑战性但最有值(value)的 绩效条款。
  • 另一种是忽略压缩 完全分解这些文件,或者至少连接起来 他们(您确实会看到没有压缩的性能下降)。
  • 最后,您可以将文件 blob 分成大约 100MB 的 block ,然后将它们 gzip。

我认为将某种 tarball 加载程序写入 piggybank 是完全合理的,但我个人更愿意以不同的方式放置数据。

关于hadoop - 如何将 tarball 加载到 pig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10185007/

相关文章:

android - Hadoop 移动应用程序

java - 数组越界Mapreduce

mysql - 使用 hive 配置 mysql 后无法启动 hive metastore 服务或 hive-shell

java - Pig 0.13.0 错误 :ERROR 2998: Unhandled internal error. org/apache/commons/io/input/ClassLoaderObjectInputStream

sql - 在 Hive 中查询

database - 将SolrCloud与RDBMS结合使用或将Solr用作主要数据存储

hadoop - 在Apache Pig(Hadoop)中使用MAX时出错

hadoop - 带有错误 2999 的 pig 脚本参数

hadoop - 如何为制表符分隔的数据编写PIG UDF并在左侧添加时间戳?

hadoop - 无法使用 Apache Pig 过滤数据