【问题标题】:How to transpose/pivot the rows data to column in Spark Scala? [duplicate]如何将行数据转置/旋转到 Spark Scala 中的列? [复制]
【发布时间】:2018-06-08 22:06:24
【问题描述】:

我是 Spark-SQL 的新手。我在 Spark Dataframe 中有这样的信息

Company Type Status
A       X    done
A       Y    done
A       Z    done
C       X    done
C       Y    done
B       Y    done

我想显示如下

Company X-type Y-type Z-type
A       done    done    done
B       pending done    pending
C       done    done    pending

我无法实现这是 Spark-SQL

请帮忙

【问题讨论】:

    标签: scala apache-spark apache-spark-sql pivot


    【解决方案1】:

    你可以groupbyCompany然后在Type列上使用pivot函数

    这是一个简单的例子

    import org.apache.spark.sql.functions._
    
    val df = spark.sparkContext.parallelize(Seq(
            ("A", "X", "done"),
            ("A", "Y", "done"),
            ("A", "Z", "done"),
            ("C", "X", "done"),
            ("C", "Y", "done"),
            ("B", "Y", "done")
          )).toDF("Company", "Type", "Status")
    
    val result = df.groupBy("Company")
        .pivot("Type")
        .agg(expr("coalesce(first(Status), \"pending\")"))
    
    result.show()
    

    输出:

    +-------+-------+----+-------+
    |Company|      X|   Y|      Z|
    +-------+-------+----+-------+
    |      B|pending|done|pending|
    |      C|   done|done|pending|
    |      A|   done|done|   done|
    +-------+-------+----+-------+
    

    您可以稍后重命名该列。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-08
      • 2019-02-23
      • 2020-10-10
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2017-06-11
      相关资源
      最近更新 更多