Если у меня есть фрейм данных с полем tm
типа timestamp
, скажем, он охватывает несколько дней, много данных.Могу ли я разделить по времени и записать в папки что-то вроде этого:
gs://project/data/date=2019-09-19/hour=00/_SUCCESS
gs://project/data/date=2019-09-19/hour=00/part_000-....parquet
...
gs://project/data/date=2019-09-19/hour=01/_SUCCESS
...
gs://project/data/date=2019-09-20/hour=00/_SUCCESS
Скажем, все вместе 36 часов, я пытаюсь собрать 36 папок и, возможно, 360 выходных разделов между ними.
Я вижу, что могу сделать что-то вроде
df.repartition(360, F.date_format('tm', 'yyyy-MM-dd'), F.hour('tm'))
, и есть также
df.write.partitionBy( ...
, но я не уверен, могу ли я записать pyspark во все 36 папокв параллели.Возможно, мне придется записывать в каждую папку одну за другой, просто отфильтровывать нужный мне час и записывать в него - но тогда я буду недостаточно использовать свой кластер, поскольку каждый час имеет только 10 выходных разделов.
Я думаю, что проще, если у меня есть столбцы date
и hour
в кадре данных, но я не хотел этого делать, я просто хотел один столбец tm
.