Pyspark 获取多个列的不同值
我想从多个列中收集不同的值。 我可以这样做:Pyspark 获取多个列的不同值,pyspark,apache-spark-sql,Pyspark,Apache Spark Sql,我想从多个列中收集不同的值。 我可以这样做: for c in columns: values = dataframe.select(c).distinct().collect() 但这需要很多时间。是否有一种方法可以同时对所有列执行此操作?使用collect\u set从column函数中收集不同的值 DataFrame中的示例数据 >>> df.show() +---+---+---+ | a| b| c| +---+---+---+ | 1| 2| 3
for c in columns:
values = dataframe.select(c).distinct().collect()
但这需要很多时间。是否有一种方法可以同时对所有列执行此操作?使用
collect\u set
从column
函数中收集不同的值
DataFrame中的示例数据
>>> df.show()
+---+---+---+
| a| b| c|
+---+---+---+
| 1| 2| 3|
| 2| 2| 4|
| 1| 3| 2|
| 4| 3| 3|
+---+---+---+
导入所需的函数
>>> from pyspark.sql.functions import collect_set
>>> from pyspark.sql.functions import col
collect\u set
函数用于收集列中的不同值
>>> columnExprs = map(lambda c: collect_set(col(c)).alias(c),df.columns)
在选择中应用columnExprs
>>> df.select(*columnExprs).show()
+---------+------+---------+
| a| b| c|
+---------+------+---------+
|[1, 2, 4]|[2, 3]|[2, 3, 4]|
+---------+------+---------+
使用collect
功能收集结果
>>> df.select(*columnExprs).collect()
[Row(a=[1, 2, 4], b=[2, 3], c=[2, 3, 4])]
如果可能的话,这种手术的结果会是什么样?这是一个很好的问题。:-)输出结果是什么?为什么不在一个过程中为所有想要的列运行它?我不知道如何运行。太好了,这正是我需要的。非常感谢你!