我刚刚开始使用Pyspark,并希望将文件另存为csv而不是文本文件。我尝试使用Stack Overflow上的一些答案,例如
def toCSVLine(data):
return ','.join(str(d) for d in data)
然后
rdd = lines.map(toCSVLine)
rdd.saveAsTextFile("file.csv")
它的工作原理是我可以在excel中打开它,但所有信息都放在电子表格的A列中。我希望能够将rdd中的每一列(例如(“ID”,“rating”)放入excel中的单独列中,因此ID将在A列中,并且评级将在B列中。是否存在一种方法吗?
答案 0 :(得分:1)
在excel中,您是否将文件拆分为','?
在Excel中,转到数据标签,然后在数据工具下选择文字到列,然后选择分隔并点击下一步。然后选择逗号作为分隔符并点击完成。
修改强>
通常,如果逗号位于数据中,最好使用与逗号不同的分隔符创建csv。根据您的评论,如果您要创建csv,只需使用其他分隔符(例如&#39 ;;',' |',' ^'或标签) 。我更喜欢的另一个选择是将问题包裹在""像这样:
setTimeout(function () {
var objDiv = document.getElementById("mydiv");
objDiv.scrollTop = objDiv.scrollHeight;
}, 0);
Excel应该仅保留引号中的内容,并且仅在引号之外的逗号上拆分。但同样,这不是我的首选解决方案。
答案 1 :(得分:1)
如果您使用Spark> = 2.0并假设您的RDD具有表格格式(如果您希望将其保存为CSV格式,它应该是这样),一种方法可能是首先从RDD创建一个Dataframe并且然后使用DataFrameWriter导出为CSV。
from pyspark.sql import SparkSession
spark = SparkSession(sc).getOrCreate()
df = spark.createDataframe(rdd)
df.write.csv("/path/to/file.csv", sep=',', header=True)
有关其他选项和更多信息,请查看the pyspark.sql docs。
答案 2 :(得分:0)
一种选择是将RDD转换为数据帧,然后另存为CSV。
from pyspark import SparkContext
df = sqlContext.createDataFrame(rdd, ['count', 'word'])
# Write CSV (I have HDFS storage)
df.coalesce(1).write.format('com.databricks.spark.csv').options(header='true').save('file:///home/username/csv_out')
请看我刚发布的这篇文章: How to write the resulting RDD to a csv file in Spark python