更改Pyspark rdd中saveAsTextFile选项中的分隔符

2024-10-03 23:18:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据集在HDFS中可用。我正在阅读并执行过滤器操作。在

dir = sc.textFile('/datasets/DelayedFlights.csv').filter(lambda x: 
int(x.split(',')[24]) == 1).map(lambda y: y.split(','))
The output of above operation is
[u'1763', u'2008', u'1', u'3', u'4', u'922.0', u'915', u'', u'1050', u'WN', 
u'1069', u'N630WN', u'', u'95.0', u'', u'', u'7.0', u'SAN', u'SMF', u'480', 
u'', u'12.0', u'0', u'N', u'1', u'', u'', u'', u'', u'']
[u'1911', u'2008', u'1', u'3', u'4', u'2325.0', u'1900', u'', u'2030', 
u'WN', u'2092', u'N302SW', u'', u'90.0', u'', u'', u'265.0', u'SFO', u'SAN', 
u'447', u'', u'11.0', u'0', u'N', u'1', u'', u'', u'', u'', u'']
[u'2651', u'2008', u'1', u'4', u'5', u'1949.0', u'1905', u'', u'1910', 
u'WN', u'1403', u'N504SW', u'', u'65.0', u'', u'', u'44.0', u'BOI', u'RNO', 
u'335', u'', u'11.0', u'0', u'N', u'1', u'', u'', u'', u'', u'']

用上面的hdxti要用分隔符保存文件的路径 有谁能告诉我如何在python中将分隔符从逗号改为制表符吗


Tags: csv数据lambda过滤器dirhdfsfilterdatasets
1条回答
网友
1楼 · 发布于 2024-10-03 23:18:23

实现这一点的一种方法是将RDD转换为一个数据帧,并用csv格式保存数据帧,分隔符选项设置为tab,如下所示。在

rdd = spark.sparkContext.parallelize([['1763', '2008', '1', '3', '4', '922.0'], ['1763', '2008', '1', '3', '4', '922.0'], ['1763', '2008', '1', '3', '4', '922.0']])
df = spark.createDataFrame(rdd.map(lambda x: tuple(x)))
df.write.format('com.databricks.spark.csv').option("delimiter", '\t').save('/path/to/csv/file/')

如果你不想把你的rdd转换成dataframe,请按照下面的代码片段。在

^{pr2}$

数据帧方法优于上述方法。在

相关问题 更多 >