Scala 选择列并在列之间添加固定宽度空间,然后保存到Spark中的fixedWidth文件

Scala 选择列并在列之间添加固定宽度空间,然后保存到Spark中的fixedWidth文件,scala,apache-spark,pyspark,Scala,Apache Spark,Pyspark,我想从DF中选择几个列 在这些列之间,我需要添加不同的空格,因为最终用户需要固定宽度的文件,但不确定未来的几列。因此,需要在这两者之间添加一些固定宽度的空间。 我需要将此文件另存为文本文件,而不将标题另存为FixedWidth文件 我的输出字符串应该如下所示 aaa bbb ccc ddd 其中aaa,bbb。。。是从DF中选择的列值,中间添加了3个空格 这里有人能帮忙吗这是Pypark 但在Scala,情况几乎相同: df.SELECTCONCATCOLFIRST列,亮起, ColSecon

我想从DF中选择几个列

在这些列之间,我需要添加不同的空格,因为最终用户需要固定宽度的文件,但不确定未来的几列。因此,需要在这两者之间添加一些固定宽度的空间。 我需要将此文件另存为文本文件,而不将标题另存为FixedWidth文件

我的输出字符串应该如下所示

aaa bbb ccc ddd

其中aaa,bbb。。。是从DF中选择的列值,中间添加了3个空格

这里有人能帮忙吗这是Pypark

但在Scala,情况几乎相同:

df.SELECTCONCATCOLFIRST列,亮起, ColSecond列,点亮,
colthirdColumn.show

我认为如果将输出保存为文本文件,那么使用RDD会更好。这是我的pyspark解决方案

>>> data = sc.parallelize([
...     ('aaa','bbb','ccc','ddd'),
...     ('aaa','bbb','ccc','ddd'),
...     ('aaa','bbb','ccc','ddd')])
>>> columns = ['a','b','c','d']
>>> 
>>> df = spark.createDataFrame(data, columns)
>>> 
>>> df.show()
+---+---+---+---+
|  a|  b|  c|  d|
+---+---+---+---+
|aaa|bbb|ccc|ddd|
|aaa|bbb|ccc|ddd|
|aaa|bbb|ccc|ddd|
+---+---+---+---+

>>> 
>>> df.registerTempTable("table1")
>>> 
>>> table1 = spark.sql("select concat(a,'   ', b,'   ',c, '   ', d) col from table1")
>>> 
>>> table1.show()
+--------------------+
|                 col|
+--------------------+
|aaa   bbb   ccc  ...|
|aaa   bbb   ccc  ...|
|aaa   bbb   ccc  ...|
+--------------------+

>>> 
>>> rdd = table1.rdd.map(lambda x: "".join([str(i) for i in x]))
>>> 
>>> rdd.collect()
['aaa   bbb   ccc   ddd', 'aaa   bbb   ccc   ddd', 'aaa   bbb   ccc   ddd']
>>> 
>>> rdd.saveAsTextFile("/yourpath")

是否要将多个列合并到一个值之间有空格的列中您可以将所有列合并到一个固定长度的字符串列中并写入输出是的,我需要类似于SQL的东西,-从表中选择col1、、col2、、col3-此结果存储在一个固定宽度的字符串中