получить количество разделов в pyspark - PullRequest
0 голосов
/ 19 октября 2019

Я выбираю все из таблицы и создаю из нее фрейм данных (df), используя Pyspark. Который разделен как:

  partitionBy('date', 't', 's', 'p')

Теперь я хочу получить количество разделов с помощью

  df.rdd.getNumPartitions()

, но он возвращает намного большее число (15642 раздела), которое ожидалось (18 разделов):

команда show partitions в кусте:

 date=2019-10-02/t=u/s=u/p=s
 date=2019-10-03/t=u/s=u/p=s
 date=2019-10-04/t=u/s=u/p=s
 date=2019-10-05/t=u/s=u/p=s
 date=2019-10-06/t=u/s=u/p=s
 date=2019-10-07/t=u/s=u/p=s
 date=2019-10-08/t=u/s=u/p=s
 date=2019-10-09/t=u/s=u/p=s
 date=2019-10-10/t=u/s=u/p=s
 date=2019-10-11/t=u/s=u/p=s
 date=2019-10-12/t=u/s=u/p=s
 date=2019-10-13/t=u/s=u/p=s
 date=2019-10-14/t=u/s=u/p=s
 date=2019-10-15/t=u/s=u/p=s
 date=2019-10-16/t=u/s=u/p=s
 date=2019-10-17/t=u/s=u/p=s
 date=2019-10-18/t=u/s=u/p=s
 date=2019-10-19/t=u/s=u/p=s

Есть идеи, почему количество разделов такое огромное? и как я могу получить количество разделов, как ожидалось (18)

Ответы [ 2 ]

0 голосов
/ 19 октября 2019
spark.sql("show partitions hivetablename").count()

Количество разделов в rdd отличается от разделов куста. Spark обычно разбивает ваш rdd на количество исполнителей в кластере, так что каждый исполнитель получает справедливую долю задачи. Вы можете управлять разделами rdd, используя sc.parallelize (,)), df.repartition () или coalesce ().

0 голосов
/ 19 октября 2019

Я нашел обходной путь проще:

>>> t  = spark.sql("show partitions my_table")
>>> t.count()
18  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...