Spark Scala |Создание Dataframe Dyanmically - PullRequest
0 голосов
/ 02 октября 2018

Я хотел бы динамически создавать имена фреймов данных из коллекции.

Пожалуйста, смотрите ниже:

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))

Если нет, предложите эффективный метод.

1 Ответ

0 голосов
/ 02 октября 2018

Суман, я полагаю, что нижеприведенное может помочь вашему сценарию использования

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()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...