Я пытаюсь разбить мой основной 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...