python - 在 Apache Spark 中指定输出文件名

标签 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")

这将创建相同的 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

编辑

最近阅读the article这将使 Spark 用户的生活更加轻松。

最佳答案

Spark 还在后台使用 Hadoop,因此您可能会得到想要的东西。 saveAsTextFile 是这样实现的:

def saveAsTextFile(path: String) {
  this.map(x => (NullWritable.get(), new Text(x.toString)))
    .saveAsHadoopFile[TextOutputFormat[NullWritable, Text]](path)
}

您可以将自定义的 OutputFormat 传递给 saveAsHadoopFile。我不知道如何从 Python 中做到这一点。抱歉回答不完整。

关于python - 在 Apache Spark 中指定输出文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293962/

相关文章:

apache-spark - 如何在hadoop服务器中查找已安装的库?

java - Spark : Read by S3 aws-sdk or as RDD

java - 文档(行)之间的余弦相似度 - spark

python - Scrapy:如何捕获下载错误并尝试再次下载

apache-spark - 如何配置Apache Spark 2.4.5连接到HIVE的MySQL元存储库?

python gtk3 treeview 右键没有选择正确的选择

java - 安装 Eclipse Classic 4.2 时遇到问题

linux - 具有替代方法的重载方法值 udf

java - 有没有办法使用 Lenskit 作为推荐引擎并从 Django/Python 调用他?

python - 在 stdout 和 stderr 之外的其他位置打印