Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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
在apache spark/Storm中运行python脚本_Python_Hadoop_Apache Spark - Fatal编程技术网

在apache spark/Storm中运行python脚本

在apache spark/Storm中运行python脚本,python,hadoop,apache-spark,Python,Hadoop,Apache Spark,我有一个用python编写的算法(不兼容hadoop,即不兼容mapper.py和reducer.py),它在本地系统(不是hadoop)中运行得很好。我的目标是在hadoop中运行它 选项1:Hadoop流媒体。但是,我需要将这个python脚本转换为mapper和reducer。还有别的办法吗 选项2:在Storm中运行此python脚本。但是,我使用的cloudera没有Storm。我需要在cloudera中安装storm,或者需要使用Spark。如果我在cloudera安装storm。这

我有一个用python编写的算法(不兼容hadoop,即不兼容mapper.py和reducer.py),它在本地系统(不是hadoop)中运行得很好。我的目标是在hadoop中运行它

选项1:Hadoop流媒体。但是,我需要将这个python脚本转换为mapper和reducer。还有别的办法吗

选项2:在Storm中运行此python脚本。但是,我使用的cloudera没有Storm。我需要在cloudera中安装storm,或者需要使用Spark。如果我在cloudera安装storm。这是更好的选择吗

选项3:通过Spark(Cloudera)运行此python脚本。有可能吗

此算法不适用于实时处理。但是,我们想用hadoop技术处理它。

请提供其他合适的解决方案。

首先,您想实现什么目标?在Hadoop技术上运行对您意味着什么?如果目标是处理大量数据,这是一回事,如果要并行化算法,这是另一回事。我猜你两者都想要

首先,算法是可并行的吗?它能否同时在多个数据块上运行,并最终收集所有数据以得出最终答案?有些算法不是,特别是当它们是递归的并且需要以前计算的数据来处理下一个时

无论如何,在Hadoop上运行意味着使用Hadoop工具运行,无论是Spark、Storm还是其他可以在Python上运行的服务,利用Hadoop意味着为它编写算法。
如果您的算法是可并行的,那么您很可能可以轻松地使用处理一段数据的那一段,并对其进行调整,使其能够与Spark或Storm一起在大型数据集上运行。

也许您可以描述该算法?您好,这个算法的作用是识别重复的事务。假设我的交易文件每个月都有类似于“向移动支付”的对账单描述。然后,该算法将识别这些重复事务并将其写入输出文件。此python仅在本地unix系统中使用。文件大小约为25GB。Python可以处理这个文件大小,但我们仍然希望在hadoop环境中运行这个Python脚本。因此,寻找更好的解决方案。然后,在HBase、Hive、Spark SQL或Hadoop上的Impala中加载该文件,使其成为数据库。那么在SQL中查找重复事务是非常简单的。25Gb是一个不错的大小,但对于一个数据库来说并没有那么大:它可以很容易地安装在一个节点上,所以您最好从MySQL这样的标准数据库类型开始,除非您希望在您真正需要Hadoop时,您的数据库会增长到更大的大小(几个TB)。您好,我同意对于这个文件大小,我们可能不需要Hadoop。但是,现有的python算法提供了识别重复事务的解决方案。因此,需要您帮助了解如何在hadoop环境中实现此python脚本。我们将介绍使用和不使用hadoop的解决方案。那么,正如我在第一个问题中提到的,在hadoop环境中运行这个python脚本的最佳解决方案是什么。Hadoop streaming/Storm或Spark或任何其他?然后我只需将文件加载到HDFS上,使用Spark将文件加载到带有pyspark的RDD中,并根据需要对文件进行解析,调用事务上的函数。如果不知道该算法是如何工作的,就很难详细说明如何实现它。如果你只是想要hadoop的大文件处理能力,这是我的建议,但是如果你不重新编写并行操作的算法,你的性能可能不会有太大的提高。嗨,MrE,非常感谢你的时间和帮助!我会试试派斯帕克。