Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何在spark中将dataframe转换为文本文件?_Apache Spark - Fatal编程技术网

Apache spark 如何在spark中将dataframe转换为文本文件?

Apache spark 如何在spark中将dataframe转换为文本文件?,apache-spark,Apache Spark,我卸载了雪花表并创建了一个数据帧。 此表包含各种数据类型的数据。 我试图将其保存为文本文件,但出现错误: 文本数据源不支持十进制(10,0) 所以为了解决这个错误,我铸造了select查询并将所有列转换为字符串数据类型 然后我得到了以下错误: 文本数据源只支持单列,您有5列 我的要求是创建一个文本文件,如下所示 "column1value column2value column3value and so on" 您可以使用带有空格分隔符的CSV输出: import pysp

我卸载了雪花表并创建了一个数据帧。 此表包含各种数据类型的数据。 我试图将其保存为文本文件,但出现错误:

文本数据源不支持十进制(10,0)

所以为了解决这个错误,我铸造了select查询并将所有列转换为字符串数据类型

然后我得到了以下错误:

文本数据源只支持单列,您有5列

我的要求是创建一个文本文件,如下所示

"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你可以参考