【问题标题】:Better to read from Hive or flat file in Pig?最好从 Pig 中的 Hive 或平面文件中读取?
【发布时间】:2016-12-30 19:07:58
【问题描述】:

在任何地方都找不到直接的答案。我正在将传入的数据集加入到以前位于 Web 服务后面的 MySQL 表中的几个大表中。我将表转储到 Hadoop 中的平面 CSV 文件中,我正在使用 Pig 加载传入的数据集和表文件,并执行连接。

这很慢,因为有几个表文件要加入,而且文件本身太大了。我只是想在一个字段上加入LEFT OUTER,没什么特别的。

所以,我的问题是,将 CSV 文件加载到 Hive 表中并在 Pig 中使用 HCatLoader 而不是仅加载 CSV 文件是否有任何性能优势?除了查询表的类似 SQL 的接口之外,Hive 似乎没有提供任何好处,当我只是将数据集加入整个事物时,这并不重要。

【问题讨论】:

  • 为什么不将数据加载到 Hive 并在那里完成所有工作?
  • 您确定加载是您的瓶颈吗?外连接似乎更有可能。
  • 戈登,我的项目限制不允许我这样做。 @GoBrewers 连接绝对是瓶颈,只是想知道加载部分。

标签: hadoop mapreduce hive apache-pig


【解决方案1】:

根据 Oreilly 的编程猪(第 165 页):

Hive提供SQL,是做传统数据比较好的工具 分析。大多数数据分析师已经熟悉 SQL,并且 商业智能工具希望与 SQL 中的数据源对话。 Pig Latin 是构建数据管道或做数据时的更好选择 对原始数据进行研究。

简单来说,Hive 可以更好地查询。用于构建数据管道的 PIG。 PIG over Hive 用于优化查询。


如果您要进行许多可能使用分区的连接,PIG over Hive 非常有用。

如果您只打算进行左连接,则可能不需要。然后再进一步查询和分析 Hive 会更好。

阅读:difference b/w hive and pigalso read this

【讨论】:

  • 也许我的问题不清楚。我肯定在使用 Pig,试图确定使用 HCatLoader 从 Hive 表加载数据是否有任何好处,而不是直接从 CSV 文件中读取。
  • @economy 如果您要使用基于它的分区和连接,它将很有用。
  • 所以,在这种情况下使用 HCatLoader 的好处只有在我尝试加载一个或多个特定的数据分区以进行连接时才能实现,否则我不应该看到直接从一个文件,对吗?如果是这样,这就是我正在寻找的答案。如果您要编辑答案并将我指向一些支持该答案的文档,我会接受。
  • 参考:Oreilly 的编程猪书(第 4 页和第 165 页)。实际上,当 PIG 用于 HIVE 而不是 pig 用于 FLAT 文件时,没有任何基准表明性能有任何显着提高。但与 PIG 相比,在 Hive 中查询会更有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多