更好地从 Hive 或 Pig 中的平面文件读取?

Better to read from Hive or flat file in Pig?

无法在任何地方找到关于此的直接答案。我正在将一个传入数据集连接到几个大型 tables,这些大型 tables 以前位于 Web 服务后面的 MySQL tables 中。我将 tables 转储到 Hadoop 中的平面 CSV 文件,并且我正在使用 Pig 加载传入的数据集和 table 文件,并执行连接。

进展缓慢,因为有几个 table 文件要加入,而且文件本身非常大。我只是想 LEFT OUTER 在一个字段上加入,没什么特别的。

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

根据 Oreilly 的 Programming Pig(第 165 页):

Hive provides SQL, it is a better tool for doing traditional data analytics. Most data analysts are already familiar with SQL, and business intelligence tools expect to speak to data sources in SQL. Pig Latin is a better choice when building a data pipeline or doing research on raw data.

简而言之,Hive 用于更好的查询。 PIG 用于构建数据管道。 PIG over Hive 以优化查询。


如果您要在可能利用分区的情况下进行许多连接,则 PIG over Hive 非常有用。

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

阅读:difference b/w hive and pig and also read this.