【发布时间】:2015-04-10 03:30:58
【问题描述】:
我有以下要求,但对选择哪一个以获得高性能感到困惑。我不是Java开发人员。我对 Hive、Pig 和 Python 感到满意。
我正在使用带有 tez 引擎的 HDP2.1。数据源是文本文件(80 GB)和 Oracle 表(15 GB)。两者都是结构化数据。我听说 Hive 将适用于结构数据,Python map reduce 流概念也将具有比 hive 和 Pig 更高的性能。请澄清。
我正在使用 Hive,原因是:
- 需要基于一列连接这两个来源。
- 由于数据量巨大,使用ORC格式的表来存储join结果
- 文本文件名将用于生成一个输出列,并已使用虚拟列概念 input__file__name 字段执行。
- 加入后需要对每一行进行一些算术运算,并通过 python UDF 进行
现在,使用 Hive 和 Python UDF 的 4 节点集群,从数据复制到 HDFS 到最终结果的完整执行时间需要 2.30 小时。
我的问题是:
1) 我听说 Java Mapreduce 总是更快。 Python Map reduce 流概念是否也是如此?
2) 我可以在Python中实现以上所有功能,例如join,检索文本文件名,ORC压缩数据流,因为体积很大?
3) Pig 加入会比 Hive 更好吗?如果是,我们可以在 Pig 中获取输入文本文件名以生成输出列吗?
提前致谢。
【问题讨论】:
标签: python hadoop mapreduce hive apache-pig