【问题标题】:Spark Scala | create Dataframe Dyanmically火花斯卡拉 |动态创建数据框
【发布时间】:2019-03-07 03:09:47
【问题描述】:

我想从集合中动态创建数据框名称。

请看下面:

val set1 = Set("category1","category2","category3")

以下是一个 UDF,它从集合中获取字符串 x 作为输入并相应地生成数据帧:

def catDfgen(x: String): DataFrame = {
    spark.sql(s"select * from table where col1 = '$x'")
}

现在我需要帮助,不仅要创建DataFrame,而且要动态生成DataFrame名称以实现

val category1DF = catDfgen($x)
val category2DF = catDfgen($x)

...等等。是否可以使用下面的代码来做到这一点?

set1.map( x =>  val $x+"DF" = catDfgen($x))

如果不是,请提出一个有效的方法。

【问题讨论】:

  • 为什么不使用字典(即Map)?

标签: scala apache-spark dataframe


【解决方案1】:

Suman,我相信以下内容可能会对您的用例有所帮助

import org.apache.spark.sql.{DataFrame, SparkSession}

object Test extends App {

  val spark: SparkSession = SparkSession.builder().master("local").getOrCreate()

  val set1 = Set("category1","category2","category3")

  val dfs: Map[String, DataFrame] = set1.map(x =>
    (s"${x}DF", spark.sql(s"select * from table where col1 = '$x'").alias(s"${x}DF").toDF())
  ).toMap

  dfs("category1DF").show()

  spark.stop()
}

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 1970-01-01
    • 2017-03-16
    • 2016-04-27
    • 2017-08-22
    • 1970-01-01
    • 2021-10-28
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多