Количество файлов в hdfs не равно результат getNumPartitions, как это возможно? - PullRequest
2 голосов
/ 02 июля 2019

В Spark я написал такую ​​таблицу (я сделал это, потому что в первой таблице было слишком много разделов):

spark.table('table1')\
.coalesce(2000).write.format('orc').mode('overwrite').saveAsTable("table2")

Когда я смотрю в формате hdf, я вижу это:

hdfs dfs -ls hdfs://ha/apps/hive/warehouse/my.db/table2
Found 2001 items

Это верно.Но когда я пытаюсь использовать getNumPartitions, то вижу что-то странное:

spark.table('table2').rdd.getNumPartitions()
1962

Меня пытались сделать repartition(2000) вместо coalesce, но:

spark.table('table1')\
.repartition(2000).write.format('orc').mode('overwrite').saveAsTable("table3")

hdfs dfs -ls hdfs://ha/apps/hive/warehouse/my.db/table3
Found 2001 items

spark.table('table3').rdd.getNumPartitions()
2167

Просто для интереса, я делаю перераспределение в определенном столбце, который содержит только 293 уникальных значения, и вот результат:

spark.table('table1')\
    .repartition(2000, "agg_date").write.format('orc').mode('overwrite').saveAsTable("table4")

hdfs dfs -ls hdfs://ha/apps/hive/warehouse/my.db/table4
Found 276 items

spark.table('table4').rdd.getNumPartitions()
2167

Я не могу объяснить, почему это работает так странно.Почему в первом и втором случаях у меня правильное количество файлов, странные результаты шины getNumPartitions()?И почему в третьем случае я получил 275 файлов вместо 293, которые я ожидал, и getNumPartitions() показали мне что-то странное?

Спасибо!

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