Размеры паркета Pyspark резко отличаются - PullRequest
0 голосов
/ 19 сентября 2019

Я использую pyspark для ежедневной обработки фиксированного набора записей данных и сохраняю их в виде 16 паркетных файлов в таблице Hive, используя дату в качестве раздела.Теоретически, число записей каждый день должно быть одного порядка, показанного ниже, около 1,2 миллиарда строк, и оно действительно в том же порядке.

enter image description here

Когда я просматриваю файлы паркета, размер каждого файла паркета в каждый день составляет около 86 МБ, как показано в 2019-09-04, как показано ниже

enter image description here

Но одна вещь, которую я заметил очень странной, - это дата 2019-08-03, размер файла в 10 раз больше, чем файлы другой даты, но количество записей кажется более или менее одинаковым.Я так растерялся и не смог придумать причину для этого.Если у вас есть идеи, почему, пожалуйста, поделитесь ими со мной.Спасибо.

enter image description here

Я только что понял, что способ сохранения данных за 2019-08-03 выглядит следующим образом

cols = sparkSession \
.sql("SELECT * FROM {} LIMIT 1".format(table_name)).columns

df.select(cols).write.insertInto(table_name, overwrite=True)

Для других дней

insertSQL = """
INSERT OVERWRITE TABLE {}
PARTITION(crawled_at_ds = '{}')
SELECT column1, column2, column3, column4
FROM calendarCrawlsDF
"""

sparkSession.sql(
    insertSQL.format(table_name,
                     calendarCrawlsDF.take(1)[0]["crawled_at_ds"]))

Для 2019-08-03 я использовал метод Dataframe insertInto .В другие дни я использовал sparkSession sql для выполнения INSERT OVERWRITE TABLE

Может ли это быть причиной?

...