在 Spark Dataframe 中提取数组索引

Oct*_*erA 1 scala dataframe apache-spark

我有一个带有数组类型列的数据框,例如:

val df = List(("a", Array(1d,2d,3d)), ("b", Array(4d,5d,6d))).toDF("ID", "DATA")
df: org.apache.spark.sql.DataFrame = [ID: string, DATA: array<double>]

scala> df.show
+---+---------------+
| ID|           DATA|
+---+---------------+
|  a|[1.0, 2.0, 3.0]|
|  b|[4.0, 5.0, 6.0]|
+---+---------------+
Run Code Online (Sandbox Code Playgroud)

我希望爆炸数组并具有索引

+---+------------------+
| ID|  DATA_INDEX| DATA|
+---+------------------+
|  a|1           | 1.0 |
|  a|2           | 2.0 |
|  a|3           | 3.0 |
|  b|1           | 4.0 |
|  b|2           | 5.0 |
|  b|3           | 6.0 |
+---+------------+-----+
Run Code Online (Sandbox Code Playgroud)

我希望能够用 Scala 和 Sparlyr 或 SparkR 来做到这一点,我正在使用 spark 1.6

Sha*_*ala 6

posexplodespark函数中有一个可用的函数

   import org.apache.spark.sql.functions._

   df.select("ID", posexplode($"DATA))
Run Code Online (Sandbox Code Playgroud)

PS:此2.1.0版本仅在版本后可用