如何获取 HIVE/PySpark 表中每一列的唯一值?
Posted
技术标签:
【中文标题】如何获取 HIVE/PySpark 表中每一列的唯一值?【英文标题】:How to get unique values for each column in HIVE/PySpark table? 【发布时间】:2018-07-18 05:35:02 【问题描述】:我在 HIVE/PySpark 中有一个包含 A、B 和 C 列的表。 我想为每个列获取唯一值,例如
A: [1, 2, 3], B:[a, b], C:[10, 20]
任何格式(数据框、表格等)
如何在 HIVE 或 PySpark 中有效地(每列并行)执行此操作?
我目前的方法是分别对每一列执行此操作,因此需要很多时间。
【问题讨论】:
【参考方案1】:我们可以使用pyspark.sql.functions
模块中的collect_set()
,
>>> df = spark.createDataFrame([(1,'a',10),(2,'a',20),(3,'b',10)],['A','B','C'])
>>> df.show()
+---+---+---+
| A| B| C|
+---+---+---+
| 1| a| 10|
| 2| a| 20|
| 3| b| 10|
+---+---+---+
>>> from pyspark.sql import functions as F
>>> df.select([F.collect_set(x).alias(x) for x in df.columns]).show()
+---------+------+--------+
| A| B| C|
+---------+------+--------+
|[1, 2, 3]|[b, a]|[20, 10]|
+---------+------+--------+
【讨论】:
以上是关于如何获取 HIVE/PySpark 表中每一列的唯一值?的主要内容,如果未能解决你的问题,请参考以下文章