【问题标题】:How to convert a Spark DataFrame column into a list?如何将 Spark DataFrame 列转换为列表?
【发布时间】:2017-05-18 07:50:39
【问题描述】:

我想将一个 Spark DataFrame 转换为另一个 DataFrame,具体方式如下:

我有 Spark DataFrame:

col  des
A    a
A    b
B    b
B    c

作为操作的结果,我还希望有一个 Spark DataFrame:

col  des
A    a,b
B    b,c

我尝试使用:

结果

结果我得到了计数。是否有(summarize 或 agg)的任何参数将列转换为列表或类似的东西,但假设所有操作都在 Spark 上完成?

提前谢谢你

【问题讨论】:

  • 你可以使用collect_list(),但恐怕还没有集成到SparkR中。
  • 不幸的是它不是:(我发现它是在pySpark中实现的,这是一种可能的解决方案。

标签: apache-spark group-by aggregate spark-dataframe sparkr


【解决方案1】:

这是scala中的解决方案,你需要弄清楚SparkR。

  val dataframe = spark.sparkContext.parallelize(Seq(
    ("A", "a"),
      ("A", "b"),
      ("B", "b"),
      ("B", "c")
  )).toDF("col", "desc")

  dataframe.groupBy("col").agg(collect_list(struct("desc")).as("desc")).show

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    sparkR 代码:

        sc <- sparkR.init()
        sqlContext <- sparkRSQL.init(sc)
    
        #create R data frame
    
        df <- data.frame(col= c("A","A","B","B"),des= c("a","b","b","c"))
    
        #converting to spark dataframe
    
        sdf <- createDataFrame( sqlContext, df)
    
        registerTempTable(sdf, "sdf")
    
        head(sql(sqlContext, "SQL QUERY"))
    

    在里面写对应的sql查询并执行。

    【讨论】:

      猜你喜欢
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2021-09-25
      • 2017-02-20
      • 2013-02-13
      • 2022-01-07
      • 2018-03-19
      相关资源
      最近更新 更多