Как сканировать Dataframe только один раз, чтобы разделить его на несколько подкадров? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь разбить мой основной Dataframe (dfData) на умноженные полу Dataframe без повторного сканирования основной таблицы при каждом разрезании его на части.Я не могу агрегировать таблицу, потому что преобразования, которые я хотел бы обработать на каждом из полуфреймов данных, не являются агрегирующими (join, withColumn и другие ...)

Есть предложения?

import org.apache.spark.sql.Row
import org.apache.spark.sql.types._
import org.apache.spark.storage.StorageLevel

val schema = List(
StructField("table", StringType, true),
StructField("type", StringType, true))

val data = Seq(
Row("NY", "Earnings Call"),
Row("NY", "Guidance Call"),
Row("NY", "Shareholder Analyst Call"),
Row("London", "Company Conference Presentation"),
Row("London", "Mergers&Aquisitions Call"),
Row("London", "Sales Call"),
Row("Berlin", "Analyst Day"),
Row("Berlin", "Special Call"))

val dfData = spark.createDataFrame(
  spark.sparkContext.parallelize(data),
  StructType(schema))

dfData.persist(StorageLevel.MEMORY_ONLY)


val dfNY = dfData.where(col("table") === "NY").join(df_external_1,col("type") === col("type"), "left").withColumn(...)

val dfLondon = dfData.where(col("table") === "London").join(df_external_2,col("table") === col("table"), "left").withColumn(...)

val dfBerlin = dfData.where(col("table") === "Berlin").join(df_external_3,col("type") === col("type"), "left").withColumn(...)

val dfUnion = dfNY.union(dfLondon).union(dfBerlin)
dfUnion.write...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...