Ale*_*exV 2 apache-spark pyspark
我有一个 RDD,我想找到多个列的不同值。
例子:
Row(col1=a, col2=b, col3=1), Row(col1=b, col2=2, col3=10)), Row(col1=a1, col2=4, col3=10)
我想找一张地图:
col1=[a,b,a1]
col2=[b,2,4]
col3=[1,10]
Run Code Online (Sandbox Code Playgroud)
Dataframe 可以帮助更快/更简单地计算吗?
我对 RDD 的解决方案是:
col1=[a,b,a1]
col2=[b,2,4]
col3=[1,10]
Run Code Online (Sandbox Code Playgroud)
谢谢
我希望我正确理解你的问题;您可以尝试以下操作:
import org.apache.spark.sql.{functions => F}
val df = Seq(("a", 1, 1), ("b", 2, 10), ("a1", 4, 10))
df.select(F.collect_set("_1"), F.collect_set("_2"), F.collect_set("_3")).show
Run Code Online (Sandbox Code Playgroud)
结果:
+---------------+---------------+---------------+
|collect_set(_1)|collect_set(_2)|collect_set(_3)|
+---------------+---------------+---------------+
| [a1, b, a]| [1, 2, 4]| [1, 10]|
+---------------+---------------+---------------+
Run Code Online (Sandbox Code Playgroud)
出于以下几个原因,上面的代码应该比预期的select distinct
逐列更有效:
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
13366 次 |
| 最近记录: |