【发布时间】:2018-11-12 01:02:59
【问题描述】:
我在数据框中记录为字符串,其中包含 1000 个字段,分隔符为逗号,如
"a,b,c,d,e.......最多 1000" -1 条记录 "p,q,r,s,t ......最多 1000" - 第二条记录
我正在使用来自 stackoverflow 的以下建议解决方案
Split 1 column into 3 columns in spark scala
df.withColumn("_tmp", split($"columnToSplit", "\\.")).select($"_tmp".getItem(0).as("col1"),$"_tmp".getItem(1).as("col2"),$"_tmp".getItem(2).as("col3")).drop("_tmp")
但是在我的情况下,我有 1000 列,我在 JSON 模式中拥有这些列,我可以像这样检索
column_seq:Seq[Array]=Schema_func.map(_.name)
for(i <-o to column_seq.length-1){println(i+" " + column_seq(i))}
返回像
0 列1 1 列 2 2 列 3 3 列4
现在我需要将所有这些索引和列名传递给 DataFrame 的下面函数
df.withColumn("_tmp", split($"columnToSplit", "\\.")).select($"_tmp".getItem(0).as("col1"),$"_tmp".getItem(1).as("col2"),$"_tmp".getItem(2).as("col3")).drop("_tmp")
在
$"_tmp".getItem(0).as("col1"),$"_tmp".getItem(1).as("col2"),
由于我无法创建包含所有 1000 列的长语句,是否有任何有效的方法可以将上述 json 模式中的所有这些参数传递给选择函数,以便我可以拆分列、添加标题然后隐藏 DF拼花。
【问题讨论】:
标签: scala apache-spark apache-spark-sql bigdata