Разделитель Spark DataFrame отсутствует - PullRequest
0 голосов
/ 23 октября 2018

[New to Spark] После создания DataFrame я пытаюсь разбить его на основе столбца в DataFrame.Когда я проверяю разделитель, используя data_frame.rdd.partitioner, я получаю Нет в качестве вывода.

Разделение с использованием ->

data_frame.repartition("column_name")

Согласно документации Spark, разделителем по умолчанию является HashPartitioner,как я могу это подтвердить?

Кроме того, как я могу изменить разделитель?

1 Ответ

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

Этого следовало ожидать.RDD преобразованный из Dataset не сохраняет разделитель , только распределение данных.

Если вы хотите проверить разделитель RDD, вы должны извлечь его из queryExecution:

scala> val df = spark.range(100).select($"id" % 3 as "id").repartition(42, $"id")
df: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [id: bigint]

scala> df.queryExecution.toRdd.partitioner
res1: Option[org.apache.spark.Partitioner] = Some(org.apache.spark.sql.execution.CoalescedPartitioner@4be2340e)

как я могу изменить разделитель?

В общем, вы не можете.Существует метод repartitionByRange (см. Связанный поток), но в противном случае Dataset Partitioner не настраивается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...