【问题标题】:How to get unique values for each column in HIVE/PySpark table?如何获取 HIVE/PySpark 表中每一列的唯一值?
【发布时间】:2018-07-18 05:35:02
【问题描述】:

我在 HIVE/PySpark 中有一个包含 A、B 和 C 列的表。 我想为每个列获取唯一值,例如

{A: [1, 2, 3], B:[a, b], C:[10, 20]}

任何格式(数据框、表格等)

如何在 HIVE 或 PySpark 中有效地(每列并行)执行此操作?

我目前的方法是分别对每一列执行此操作,因此需要很多时间。

【问题讨论】:

    标签: hive pyspark pyspark-sql


    【解决方案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]|
    +---------+------+--------+
    

    【讨论】:

      猜你喜欢
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 2018-08-05
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多