Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以文本文件和oracle表作为源代码的Hive、Pig或Python Mapreduce哪一个将提供最佳性能?_Python_Hadoop_Mapreduce_Hive_Apache Pig - Fatal编程技术网

以文本文件和oracle表作为源代码的Hive、Pig或Python Mapreduce哪一个将提供最佳性能?

以文本文件和oracle表作为源代码的Hive、Pig或Python Mapreduce哪一个将提供最佳性能?,python,hadoop,mapreduce,hive,apache-pig,Python,Hadoop,Mapreduce,Hive,Apache Pig,我有以下要求,不知道该选择哪一个来实现高性能。我不是java开发者。我喜欢蜂箱、猪和蟒蛇 我正在使用HDP2.1和tez引擎。数据源是文本文件(80GB)和Oracle表(15GB)。两者都是结构化数据。我听说Hive将适用于结构数据,Python map reduce流媒体概念也将比Hive&Pig具有更高的性能。请澄清 我正在使用Hive,原因是: 需要基于一列连接这两个源 由于数据量巨大,因此使用ORC格式表存储联接结果 文本文件名将用于生成一个输出列,该输出列已通过虚拟列概念输入\文件

我有以下要求,不知道该选择哪一个来实现高性能。我不是java开发者。我喜欢蜂箱、猪和蟒蛇

我正在使用HDP2.1和tez引擎。数据源是文本文件(80GB)和Oracle表(15GB)。两者都是结构化数据。我听说Hive将适用于结构数据,Python map reduce流媒体概念也将比Hive&Pig具有更高的性能。请澄清

我正在使用Hive,原因是:

  • 需要基于一列连接这两个源
  • 由于数据量巨大,因此使用ORC格式表存储联接结果
  • 文本文件名将用于生成一个输出列,该输出列已通过虚拟列概念输入\文件\名称字段执行
  • 在join之后,需要对每一行执行一些算术运算,并通过pythonudf执行这些运算
现在,使用Hive和Python UDF的4节点集群,从数据复制到HDFS到最终结果的完整执行时间为2.30小时

我的问题是:

1) 我听说Java Mapreduce总是更快。Python Map reduce流媒体概念也是如此吗

2) 我可以在Python中实现上述所有功能吗?比如join、文本文件名检索、ORC之类的压缩数据流,因为体积很大

3) 猪会比蜂巢好吗?如果是,我们可以在Pig中获取输入文本文件名以生成输出列吗

提前谢谢

  • Python Map Reduce或任何使用Hadoop流接口的东西很可能会更慢。这是由于通过stdin和stdout传递数据的开销以及流式API消费者的实现(在您的例子中是python)。Python UDF在蜂巢中和猪做同样的事情

  • 您可能不想在Python端将数据流压缩到ORC中。您将不得不使用Python的ORC库,我不确定它们是否可用。如果让Python返回序列化的对象,并且Hadoop减少了压缩和存储为ORC(Python作为计算的UDF)的步骤,那么会更容易

  • 对。Pig和Python有一个非常好的编程接口,在这个接口中,您可以编写Python脚本来动态生成Pig逻辑并并行提交它。查找Python中的拉丁语。它足够健壮,可以定义Python UDF,并让Pig进行总体抽象和作业优化。Pig执行延迟评估,因此在多个连接或多个转换的情况下,它可以在优化整个管线方面显示出相当好的性能

  • 你说的是HDP2.1。你看过Spark吗?如果性能对您来说很重要,并且查看数据集的大小(看起来不太大),您将期望总体管道执行速度比Hadoop的原生MR引擎快很多倍