我有一个看起来像这样的DataFrame:
scala> data.show
+-----+---+---------+
|label| id| features|
+-----+---+---------+
| 1.0| 1|[1.0,2.0]|
| 0.0| 2|[5.0,6.0]|
| 1.0| 1|[3.0,4.0]|
| 0.0| 2|[7.0,8.0]|
+-----+---+---------+
Run Code Online (Sandbox Code Playgroud)
我想基于"id"重新组合功能,以便我可以得到以下内容:
scala> data.show
+---------+---+-----------------+
| label| id| features |
+---------+---+-----------------+
| 1.0,1.0| 1|[1.0,2.0,3.0,4.0]|
| 0.0,0.0| 2|[5.0,6.0,7.8,8.0]|
+---------+---+-----------------+
Run Code Online (Sandbox Code Playgroud)
这是我用来生成提到的DataFrame的代码
val rdd = sc.parallelize(List((1.0, 1, Vectors.dense(1.0, 2.0)), (0.0, 2, Vectors.dense(5.0, 6.0)), (1.0, 1, Vectors.dense(3.0, 4.0)), (0.0, 2, Vectors.dense(7.0, 8.0))))
val data = rdd.toDF("label", "id", "features")
Run Code Online (Sandbox Code Playgroud)
我一直在尝试使用RDD和DataFrames做不同的事情.迄今为止最"有希望"的方法是基于"id"过滤
data.filter($"id".equalTo(1))
+-----+---+---------+
|label| id| features|
+-----+---+---------+
| 1.0| 1|[1.0,2.0]|
| 1.0| 1|[3.0,4.0]|
+-----+---+---------+
Run Code Online (Sandbox Code Playgroud)
但我现在有两个瓶颈:
1)如何自动化"id"可能具有的所有不同值的过滤? …
scala dataframe apache-spark apache-spark-sql apache-spark-ml