繁体   English   中英

如何在文件 Scala spark 中输出字段填充?

[英]How to output field padding in file Scala spark?

我有一个文本文件。 现在,我希望将文件中的输出字段填充为Exp1Exp2 我该怎么办? 这是我的输入:

a
a a
a a a
a a a a
a a a a a

经验1。 当文件中的每条记录不适合n=4字段时,用-字符填充其余字段。

a _ _ _
a a _ _
a a a _
a a a a
a a a a a

经验2。 和上面一样。 当记录中的字段数超过n时,删除n=4字段之后的字段。

a _ _ _
a a _ _
a a a _
a a a a
a a a a

我的代码:

val df = spark.read.text("data.txt")
val result = df.columns.foldLeft(df){(newdf, colname) => 
   newdf.withColumnRenamed(colname, colname.replace("a", "_"))
} 
result .show 

这类似于家庭作业式的问题,因此我将根据您提供的代码帮助指导您,并尝试在此处引导您走上正确的道路。

您当前的代码只是更改列的名称。 在这种情况下,列名“value”将更改为“v_lue”。 您想要更改实际记录本身。

首先,您要将这些数据读入 RDD。 它可以使用数据框完成,但能够映射行字符串而不是 Row 对象可能会使这在概念上更容易理解。 我会让你开始。

val data = sc.textFile("data.txt")

数据将是字符串的 RDD,其中每个元素是数据文件中的一行。

我们将要将此数据映射到一些新数据,并转换每一行。

data.map(row => {
   // transform each row here
})

在这个地图中,我们对 row 进行了一些更改,它是一个字符串。 里面的代码适用于 RDD 中的每个字符串。

您可能希望拆分该行以获得一个字符串数组,以便您可以计算 'a' 出现的次数。 根据数组的大小,您需要创建一个新字符串并从该映射中输出该字符串。 如果 'a's 少于 n,您可能希望创建一个包含足够多 '_'s 的字符串。 如果太多,您可能希望返回一个带有正确数字的字符串。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM