Spark版本:1.6.1,我使用pyspark API。
DataFrame:df,有两个colume。
我试过了:
1: df.write.format('csv').save("hdfs://path/bdt_sum_vol.csv")
2: df.write.save('hdfs://path/bdt_sum_vol.csv', format='csv', mode='append')
3: df.coalesce(1).write.format('com.databricks.spark.csv').options(header='true').save('hdfs://path/')
4: df.write.format('com.databricks.spark.csv').save('hdfs://path/df.csv')
(All above didn't work, Failed to find data source)
或:
def toCSVLine(data):
return ','.join(str(d) for d in data)
lines = df.rdd.map(toCSVLine)
lines.saveAsTextFile('hdfs://path/df.csv')
(Permission denied)
问:
1,如何解决“找不到数据源”?
2,我使用sudo在hdfs上创建字典“/ path”,如果我将数据帧转为rdd,如何在hdfs上将rdd写入csv?
非常感谢!
答案 0 :(得分:0)
您可以尝试将“ .save”更改为“ .csv”:
df.coalesce(1).write.mode('overwrite').option(head='true').csv('hdfs://path/df.csv')
答案 1 :(得分:0)
请勿使用hdfs://yourpath/
尝试一下,就我而言,它起作用了:df.coalesce(1).write.format('com.databricks.spark.csv')。options(header ='true')。save(“ / user / user_name / file_name“)
它将在您的file_name位置内形成零件文件,从中可以下载csv文件。
注意:df.coalesce(1)
是必需的,否则您的file_name文件夹中会包含很多零件文件。