我正在处理一个像这样的Dataframe
df.show
+-----+-------------+
|group| groupEncoded|
+-----+-------------+
| B|(2,[1],[1.0])|
| C|(2,[0],[1.0])|
| B|(2,[1],[1.0])|
| C|(2,[0],[1.0])|
| A| (2,[],[])|
| C|(2,[0],[1.0])|
| A| (2,[],[])|
我想交换 groupEncoded
在a和b之间。
现在有一个 groupEncoded = (2,[],[])
b有 groupEncoded = (2,[1],[1.0])
. 我想把这两个换成table的样子
+-----+-------------+
|group| groupEncoded|
+-----+-------------+
| B| (2,[],[])|
| C|(2,[0],[1.0])|
| B| (2,[],[])|
| C|(2,[0],[1.0])|
| A|(2,[1],[1.0])|
| C|(2,[0],[1.0])|
| A|(2,[1],[1.0])|
我尝试了以下方法,但出现了这个错误 java.lang.RuntimeException: Unsupported literal type class org.apache.spark.ml.linalg.SparseVector (2,[],[])
```
val groupEncodedA = df.filter($"group" === "A").select($"groupEncoded").distinct.collect()(0)(0)
val groupEncodedB = df.filter($"group" === "B").select($"groupEncoded").distinct.collect()(0)(0)
val dfSwapped = df.withColumn(
"groupEncoded",
when($"group" === "A", groupEncodedB).otherwise(
when($"group" === "B", groupEncodedA).otherwise($"groupEncoded")))
在上述代码中, `groupEncodedA` 有类型 `Any` .
最好的办法是什么?
暂无答案!
目前还没有任何答案,快来回答吧!