如何将rdd[array[string]]转换成rdd[(string,string,string,string)]?

vuktfyat  于 2021-07-14  发布在  Spark
关注(0)|答案(0)|浏览(657)

我最近在研究spark。
我需要对spark dataframe的所有列执行修剪操作。
如果我们知道列名,是的,我们可以手动 withcolumn[trim()] 表演吧。
但是如果我们不知道列名,我们怎么做到呢?。
所以我在网上搜索了这个,在我找到的某个地方,首先转换rdd,然后再转换成Dataframe。
借助于此,我编写了一个函数,它获取Dataframe行,并对行中的每一列执行修剪操作。它将此列结果累加到一个数组中。
最后它返回一个array.trimmed行。
它将与dataframe中的所有行相同。
之后我创建了一个二维数组,它就像dataframe.structure一样 Array[Array[String]] 。我从这个二维数组的函数中累加这些数组行。
之后呢 sc.parallalize() 在这个函数的帮助下,我创建了一个 RDD[Array[String]] 但问题是当我转换成Dataframe时。

+--------------------+
|               value|
+--------------------+
|[/Desktop/demo.tx...|
|[/Desktop/mobile....|
|[/Desktop/metadat...|
|[/Desktop/Employe...|
+--------------------+

分配到一列的数组行。
但当我们做Map函数时

df.map(x=>(x(0),x(1),x(2),x(3))

+--------------------+------------+-----------+---+
|                  _1|          _2|         _3| _4|
+--------------------+------------+-----------+---+
|C:/Users//O.........|fruits_table|         Id|pos|
|C:/Users//O.........|      mobile|         id|csv|
|C:/Users//O.........|    metadata|column_name|csv|
|C:/Users//O.........|    employee|      EmpId|pos|
+--------------------+------------+-----------+---+

这就是我想要的。
问题是我想转换 RDD[Array[String]] 进入 RDD[(String,String,String,String)] 如果有人知道答案,请告诉我?谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题