Невозможно пройти страницу восстановления Teamwin в Moto E2

Если у вас есть dataframe, как указано в вопросе с столбцом массива как

root
 |-- features: array (nullable = true)
 |    |-- element: integer (containsNull = false)

, вы можете использовать следующую логику

val finalCols = Array("c1", "c2", "c3", "c4", "c5", "c6", "c7")

import org.apache.spark.sql.functions._
finalCols.zipWithIndex.foldLeft(df){(tempdf, c) => tempdf.withColumn(c._1, col("features")(c._2))}.select(finalCols.map(col): _*).show(false)

, которая должна дать вам

+---+---+---+---+---+---+---+
|c1 |c2 |c3 |c4 |c5 |c6 |c7 |
+---+---+---+---+---+---+---+
|0  |45 |63 |0  |0  |0  |0  |
|0  |0  |0  |85 |0  |69 |0  |
|0  |89 |56 |0  |0  |0  |0  |
+---+---+---+---+---+---+---+

Или вы можете использовать функцию udf как

import org.apache.spark.sql.functions._
def splitArrayUdf = udf((features: Seq[Int]) => testCaseClass(features(0), features(1), features(2), features(3), features(4), features(5), features(6)))

df.select(splitArrayUdf(col("features")).as("features")).select(col("features.*")).show(false)

, которая должна дать вам тот же результат

Надеюсь, что ответ полезен

0
задан Sri Jack 19 January 2019 в 04:49
поделиться