scala - 展平 Spark SQL 查询中的数据 - Spark Dataframe

标签 scala apache-spark spark-streaming apache-spark-sql

我正在尝试获取表中某一列的唯一值,并将其与其他列(例如总和、表名)一起打印,如下面的查询所示。 下面显示的子查询正在获取有效的多行,但为了将其放入列中,我需要将其展平为列表或文本,例如 [1,2,1]。如何将这些数据展平以适合相同的查询,如下所示。我的首选方法是使用 Spark SQL。请帮忙。

    **Subquery**

    (select distinct $field from tablename) 

    **Actual Code** 

    RDDdf.createOrReplaceTempView(“tablename”)

    val x=  RDDdf.schema.fieldNames

    val dfs = x.map(field => spark.sql(s"select 'RDDdf' as TableName, 
   '$field'as column, sum($field) as Sum, (select distinct $field from 
    tablename) from tablename"))

    **Expected output**

    TableName | column  | Sum | UniqueVal
    ----------+---------+-----+----------
    RDDdf     | a       | 4   | 1,2,1

最佳答案

使用内置函数collect_list:

select collect_list(value) from (select distinct($field) as value from tablename) as values

请注意,这在大型数据集上会非常慢

关于scala - 展平 Spark SQL 查询中的数据 - Spark Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45201960/

相关文章:

unit-testing - ScalaTest 和 Scala Specs 单元测试框架有什么区别?

scala - EssentialAction : How to Get the Body of a Request without Parsing It

scala - 将 Spark Row 转换为类型化的 double 组

scala - 使用 sbt run 或使用 spark-submit 脚本运行 spark 应用程序的区别

apache-spark - “spark.yarn.executor.memoryOverhead”的值设置吗?

scala - 如何将 map 转换为数据框?

pandas - Pyspark 相当于 pandas 中的 df.groupby ('id' ).resample ('D' ).last()

hadoop - 如何使用fileStream流式拼花地板文件?

java - 什么会导致我的 Spark Streaming 检查点不完整?

java - Spark模式rdd到RDD