我的数据输出如下,
DF.show(2)
+--------------+
|col1|col2|col3|
+--------------+
| 10| 20| 30|
| 11| 21| 31|
+--------------+
将其保存为文本文件-DF.rdd.saveAsTextFile(“路径”)
Row(col1=u'10', col2=u'20', col3=u'30')
Row(col1=u'11', col2=u'21', col3=u'31')
dataframe有数百万行20列,如何将其保存为如下所示的文本文件,即没有列名和python。
10|20|30
11|21|31
在创建初始的RDD时,我使用了下面的代码来删除独角兽,尽管仍然得到了独角兽,
data = sc.textFile("file.txt")
trans = data.map(lambda x: x.encode("ascii", "ignore").split("|"))
提前谢谢!
发布于 2017-02-02 19:56:38
我觉得你可以
.map(lambda l: (l[0] + '|' + l[1] + '|' + l[3])).saveAsTextFile(...)
发布于 2017-02-02 19:28:12
在spark 2.0中,您可以直接将数据输出到csv,这就是我认为您需要的全部内容。请参阅:https://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/sql/DataFrameWriter.html
所以在你的情况下,你可以做一些事情
df.write.option("sep", "|").option("header", "false").csv("some/path/")
有一个databricks插件,它在spark 1.x中提供了这个功能
https://github.com/databricks/spark-csv
至于将unicode字符串转换为ascii,请参见以下问题:Convert a Unicode string to a string in Python (containing extra symbols)
https://stackoverflow.com/questions/42010315
复制相似问题