Предварительное разбиение фрейма данных для присоединения - PullRequest
0 голосов
/ 17 июня 2020

** Я хочу предварительно разделить свои данные, вот пример кода, который я использую: **

 sparkSession.conf.set("spark.sql.autoBroadcastJoinThreshold", -1)
  val students = List (
    (1,"vasili"),
    (2,"ivan")
  )
  val addresses = List(
    (1,"UKR"),
    (1,"SG"),
    (2,"DE")
  )
  val departments = List(
    (1,"CS"),
    (1,"MATH"),
    (2,"HISTORY")
  )
   val studentsDF = students.toDF("student_id", "name") // I want to hash-partition is before hand,so that it dont re-partition for joining dept,address
   val departmentsDF = departments.toDF("student_id", "department")
   val addressesDF = addresses.toDF("student_id", "address")

   val frame: DataFrame = studentsDF.join(departmentsDF, studentsDF.col("student_id") equalTo departmentsDF.col("student_id"))
   val frame2: DataFrame = studentsDF.join(addressesDF, studentsDF.col("student_id") equalTo addressesDF.col("student_id"))

Я пытаюсь предварительно разделить DF, но не работает, как я ожидал Я пробовал

val studentsDF = students.toDF("student_id", "name").repartition(col("student_id"))

Дело в том, что я присоединяюсь к addressDF и DepartmentDF как с studentDF каждый раз, когда studentDF разбивается на хэш, я хочу предварительно разбить его с помощью col ("student_id")

...