Если я разделю набор данных, будет ли он в правильном порядке, когда я читаю его обратно? Например, рассмотрим следующий код pyspark:
# read a csv
df = sql_context.read.csv(input_filename)
# add a hash column
hash_udf = udf(lambda customer_id: hash(customer_id) % 4, IntegerType())
df = df.withColumn('hash', hash_udf(df['customer_id']))
# write out to parquet
df.write.parquet(output_path, partitionBy=['hash'])
# read back the file
df2 = sql_context.read.parquet(output_path)
Я создаю разделы в корзине customer_id. Когда я читаю весь набор данных, гарантируется ли объединение разделов в исходном порядке вставки?
Сейчас я не уверен, поэтому добавляю столбец последовательности:
df = df.withColumn('seq', monotonically_increasing_id())
Однако я не знаю, является ли это излишним.