Jee*_*evs 6 python apache-spark
我有一个MapReduce作业,我正在尝试迁移到PySpark.有没有办法定义输出文件的名称,而不是获取part-xxxxx
?
在MR中,我正在使用org.apache.hadoop.mapred.lib.MultipleTextOutputFormat
该类来实现这一目标,
PS:我确实试过这个saveAsTextFile()
方法.例如:
lines = sc.textFile(filesToProcessStr)
counts = lines.flatMap(lambda x: re.split('[\s&]', x.strip()))\
.saveAsTextFile("/user/itsjeevs/mymr-output")
Run Code Online (Sandbox Code Playgroud)
这将创建相同的part-0000
文件.
[13:46:25] [spark] $ hadoop fs -ls /user/itsjeevs/mymr-output/
Found 3 items
-rw-r----- 2 itsjeevs itsjeevs 0 2014-08-13 13:46 /user/itsjeevs/mymr-output/_SUCCESS
-rw-r--r-- 2 itsjeevs itsjeevs 101819636 2014-08-13 13:46 /user/itsjeevs/mymr-output/part-00000
-rw-r--r-- 2 itsjeevs itsjeevs 17682682 2014-08-13 13:46 /user/itsjeevs/mymr-output/part-00001
Run Code Online (Sandbox Code Playgroud)
编辑
最近阅读了文章,这将使Spark用户的生活更加轻松.
Spark 还在底层使用 Hadoop,因此您可能可以获得您想要的东西。这是如何saveAsTextFile
实现的:
def saveAsTextFile(path: String) {
this.map(x => (NullWritable.get(), new Text(x.toString)))
.saveAsHadoopFile[TextOutputFormat[NullWritable, Text]](path)
}
Run Code Online (Sandbox Code Playgroud)
您可以传入自定义的OutputFormat
to saveAsHadoopFile
。但我不知道如何从 Python 中做到这一点。抱歉,答案不完整。
归档时间: |
|
查看次数: |
4953 次 |
最近记录: |