Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 在spark本地模式下从内部工作者写入文件不会';你不会写吗?_Apache Spark_Pyspark - Fatal编程技术网

Apache spark 在spark本地模式下从内部工作者写入文件不会';你不会写吗?

Apache spark 在spark本地模式下从内部工作者写入文件不会';你不会写吗?,apache-spark,pyspark,Apache Spark,Pyspark,为了在纱线集群中运行之前在pyspark中进行应用程序开发,我想在本地模式下对其进行测试。为此,我需要从worker节点内部显式地写入一些数据,我认为在集群模式下运行时,可以使用hadooprestapi将文件写入hdfs。但是,在本地模式下运行代码时,如何从辅助任务内部写入文件 例如:- sparkConf = SparkConf().setAppName("testing").setMaster("local[*]") sc= SparkContext(conf=sparkConf)

为了在纱线集群中运行之前在pyspark中进行应用程序开发,我想在本地模式下对其进行测试。为此,我需要从worker节点内部显式地写入一些数据,我认为在集群模式下运行时,可以使用hadooprestapi将文件写入hdfs。但是,在本地模式下运行代码时,如何从辅助任务内部写入文件

例如:-

 sparkConf = SparkConf().setAppName("testing").setMaster("local[*]")
 sc= SparkContext(conf=sparkConf)

 rdd = sc.textFile("file://path to file")
 rdd.map(lambda x:x.split("\t")[0],1).reduce(func_to_reduce);

 def func_to_reduce(a,b):
    //how can i write value of a and b to a file from here
    return a+b;

澄清一下:如果我从驱动程序端代码中使用open()方法写入文件,它是有效的,但是如果我从reduce函数中使用相同的方法写入文件,它就不起作用。非常感谢您的指导和帮助

您必须实际调用save方法,就像您通过
textFile
调用load方法一样。类似于
savastextfile(path)

的内容请参见
rdd.reduce(f)
soucre代码

Spark在使用
rdd.reduce()
时调用python内置函数
reduce
两次:一次通过
rdd.mapPartitions()
在worker节点中,另一次在驱动程序节点中,在
rdd.collect()之后

因此,您不能在
rdd.reduce
函数中写入数据


似乎您想将数据保存在工作节点的本地路径上?

好吧,我之所以提出这个问题,是因为使用操作系统模块创建目录,而使用open()方法写入文件,但在reduceByKey()函数中没有起作用。当我在本地模式下运行时,我假设它应该可以访问驱动程序的本地路径,并像运行普通python脚本一样执行这些功能。之所以不是这样,是因为我完全忘记了这样一个事实,即reduceByKey更像是一个转换,而不是一个动作,因为reduceByKey()中的代码实际上并没有按照Spark的惰性求值设计运行。因此,我使用collect()对该引用调用了一个操作。现在它启动了reduce功能,并且可以很好地编写文件。谢谢大家的帮助

很抱歉,您到底想在哪里写入文件?@JoeC我正在比较这两个值,根据分析,我需要将一些新数据写入csv文件。我不想将我的缩减结果保存到文件中。我试图从reduce函数中显式地写入一些数据,这样即使在spark中作业结束之前也可以写入文件。希望这是有道理的。我知道这不是spark设计的目的,但我必须为我的应用程序这样做。不,我想将数据保存在驱动程序节点的本地路径中。无论如何,因为我是在本地模式下运行作业,所以它将是相同的文件系统?这清楚吗?