【发布时间】:2020-01-08 05:46:56
【问题描述】:
我有一个数据框,其中一列 arrs 的数组大小接近 100000。 现在我需要分解此列以获取 Array 的所有元素的唯一行。
spark.sql 的 Explode 函数正在完成这项工作,但需要足够的时间 我可以尝试优化工作的任何爆炸替代方案。
dfs.printSchema()
println("Orginal DF")
dfs.show()
//Performing Explode operation
import org.apache.spark.sql.functions.{explode,col}
val opdfs=dfs.withColumn("explarrs",explode(col("arrs"))).drop("arrs")
println("Exploded DF")
opdfs.show()
预期结果应如下所示,但此代码的替代方案将更有效地优化作业。
原始 DF
+----+------+----+--------------------+
|col1| col2|col3| arrs|
+----+------+----+--------------------+
| A|DFtest| K|[1, 2, 3, 4, 5, 6...|
+----+------+----+--------------------+
Exploded DF
+----+------+----+--------+
|col1| col2|col3|explarrs|
+----+------+----+--------+
| A|DFtest| K| 1|
| A|DFtest| K| 2|
| A|DFtest| K| 3|
| A|DFtest| K| 4|
| A|DFtest| K| 5|
| A|DFtest| K| 6|
| A|DFtest| K| 7|
| A|DFtest| K| 8|
| A|DFtest| K| 9|
| A|DFtest| K| 10|
| A|DFtest| K| 11|
| A|DFtest| K| 12|
| A|DFtest| K| 13|
| A|DFtest| K| 14|
| A|DFtest| K| 15|
| A|DFtest| K| 16|
| A|DFtest| K| 17|
| A|DFtest| K| 18|
| A|DFtest| K| 19|
| A|DFtest| K| 20|
+----+------+----+--------+
only showing top 20 rows
【问题讨论】:
-
您使用的是哪个版本的 Spark?这已在 2.3 中修复
-
我使用的是 Spark 2.1.1
标签: scala dataframe apache-spark dataset