Dataframe 在Pyspark中将数据帧写入文本文件

Dataframe 在Pyspark中将数据帧写入文本文件,dataframe,text,pyspark,Dataframe,Text,Pyspark,我正在尝试使用下面的代码将数据帧“df2”保存到文本文件中 代码: df2.write.format('text')。mode('overwrite')。save('/tmp/hive/save_text')) 错误: org.apache.spark.sql.AnalysisException:文本数据源不支持int数据类型。; Py4JJavaError回溯(最近一次调用) /deco中的databricks/spark/python/pyspark/sql/utils.py(*a,**kw

我正在尝试使用下面的代码将数据帧“df2”保存到文本文件中

代码: df2.write.format('text')。mode('overwrite')。save('/tmp/hive/save_text'))

错误:

org.apache.spark.sql.AnalysisException:文本数据源不支持int数据类型。; Py4JJavaError回溯(最近一次调用) /deco中的databricks/spark/python/pyspark/sql/utils.py(*a,**kw) 62尝试: --->63返回f(*a,**kw) 64除py4j.protocol.Py4JJavaError外的其他错误为e:

/获取返回值(应答、网关客户端、目标id、名称)中的databricks/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py 327“调用{0}{1}{2}时出错。\n”。 -->328格式(目标id,“.”,名称),值) 329其他:

Py4JJavaError:调用o1239.save时出错。 :org.apache.spark.sql.AnalysisException:文本数据源不支持int数据类型


**提问:请建议如何将数据框中的数据写入文本文件**

注意,为了使用write.format('text'),您的数据框必须只有一列,否则将抛出错误。因此,您需要将所有列转换为单个列

或者,您可以使用write.format('csv'),或者您可以将其转换为RDD并保存为文本文件

例如,假设您的数据帧包含两列,即。id,name(id是int,name是string),您希望在输出文件中以id,name的形式写入。为此,请编写如下代码:

df2.rdd.map(lambda x : str(x[0]) + "," + x[1]).saveAsTextFile('/tmp/hive/save_text')

请注意,为了使用write.format('text'),您的数据帧必须只有一列,否则它将抛出错误。因此,您需要将所有列转换为单个列

或者,您可以使用write.format('csv'),或者您可以将其转换为RDD并保存为文本文件

例如,假设您的数据帧包含两列,即。id,name(id是int,name是string),您希望在输出文件中以id,name的形式写入。为此,请编写如下代码:

df2.rdd.map(lambda x : str(x[0]) + "," + x[1]).saveAsTextFile('/tmp/hive/save_text')