Apache spark 如何在spark中将dataframe转换为文本文件?
我卸载了雪花表并创建了一个数据帧。 此表包含各种数据类型的数据。 我试图将其保存为文本文件,但出现错误: 文本数据源不支持十进制(10,0) 所以为了解决这个错误,我铸造了select查询并将所有列转换为字符串数据类型 然后我得到了以下错误: 文本数据源只支持单列,您有5列 我的要求是创建一个文本文件,如下所示Apache spark 如何在spark中将dataframe转换为文本文件?,apache-spark,Apache Spark,我卸载了雪花表并创建了一个数据帧。 此表包含各种数据类型的数据。 我试图将其保存为文本文件,但出现错误: 文本数据源不支持十进制(10,0) 所以为了解决这个错误,我铸造了select查询并将所有列转换为字符串数据类型 然后我得到了以下错误: 文本数据源只支持单列,您有5列 我的要求是创建一个文本文件,如下所示 "column1value column2value column3value and so on" 您可以使用带有空格分隔符的CSV输出: import pysp
"column1value column2value column3value and so on"
您可以使用带有空格分隔符的CSV输出:
import pyspark.sql.functions as F
df.select([F.col(c).cast('string') for c in df.columns]).write.csv('output', sep=' ')
如果只需要一个输出文件,可以在
之前添加。coalesce(1)
。write
可以使用带有空格分隔符的CSV输出:
import pyspark.sql.functions as F
df.select([F.col(c).cast('string') for c in df.columns]).write.csv('output', sep=' ')
如果只需要一个输出文件,可以在
之前添加.coalesce(1)
。write
如果要使用spark.write.text
进行写入,则需要有一列。您可以按照@mck的回答中的建议使用csv,也可以在编写以下内容之前将所有列合并为一列:
df.select(
concat_ws(“”,df.columns.map(c=>col(c.cast)(“字符串”):*).as(“值”)
).写
.文本(“输出”)
如果要使用spark.write.text
进行编写,则需要有一列。您可以按照@mck的回答中的建议使用csv,也可以在编写以下内容之前将所有列合并为一列:
df.select(
concat_ws(“”,df.columns.map(c=>col(c.cast)(“字符串”):*).as(“值”)
).写
.文本(“输出”)
我尝试了csv文件,它很有效。但是我的要求是一个文本文件。@FlashBang一个CSV文件和一个文本文件是一样的,如果你使用空格分隔符rhi@mck,它完全有效,我也可以更改分隔符。我还有一个问题要问。假设我的第1列有可变长度的数据,如第一行中的“abcd”和第二行中的“abcdefg”,我想限制字符数。例如,如果我可以为第一列设置10个字符,那么第一行值应该是“abcd”,第二行值应该是“abcdefg”。我的意思是我怎么能有空白?@FlashBang你可以参考我尝试过的csv文件,它可以工作。但是我的要求是一个文本文件。@FlashBang一个CSV文件和一个文本文件是一样的,如果你使用空格分隔符rhi@mck,它完全有效,我也可以更改分隔符。我还有一个问题要问。假设我的第1列有可变长度的数据,如第一行中的“abcd”和第二行中的“abcdefg”,我想限制字符数。例如,如果我可以为第一列设置10个字符,那么第一行值应该是“abcd”,第二行值应该是“abcdefg”。我的意思是我怎么能有空白呢?@FlashBang你可以参考