在scala spark中从一组嵌套框列创建嵌套框列块

xn1cxnb4  于 7个月前  发布在  Scala
关注(0)|答案(1)|浏览(76)

我有一个有100列的格子框架

Column1|Column2|Column3|Column4|Column5|Column6|Column7| ...     Column100

字符串
我想做一个10个格子的圆柱-比如说-

  • chunk 1将具有-Column 1到Column 10
  • chunk 2将具有-Column 11到Column 20
  • chunk 3将具有-Column 21到Column 30

...

  • chunk 10将具有列91到列100

请提供一个优化的解决方案,为这个问题的陈述.
我尝试了df.schema.fields.foreach,但没有工作。寻找更好的方法

tpgth1q7

tpgth1q71#

对于从一个数组中获取10个数组,每个数组中有10列,方法grouped可以用于拆分组中的所有列:

val columnCount = 100

val values = 1 to columnCount
val rdd = sparkContext.parallelize(Seq(Row.fromSeq(values)))
val columns = (1 to columnCount).map(idx => StructField(name = "Column" + idx, dataType = IntegerType, nullable = true))
val df = spark.createDataFrame(rdd, StructType(columns))

val chunkSize = 10
val chunks = df.columns.grouped(chunkSize).toSeq
val result: Seq[DataFrame] = chunks.map(columns => df.select(columns.head, columns.tail: _*))
result.head.show(false)

字符串
输出量:

+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+
|Column1|Column2|Column3|Column4|Column5|Column6|Column7|Column8|Column9|Column10|
+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+
|1      |2      |3      |4      |5      |6      |7      |8      |9      |10      |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+

相关问题