【发布时间】:2018-05-18 11:24:48
【问题描述】:
我想知道在将 Parquet 数据存储在 S3 中时,什么是更有效的分区方式。
在我的集群中,我目前有一个文件夹data,其中包含大量 Parquet 文件。我想更改保存数据的方式以简化数据检索。
我有两个选择。一种选择是将 Parquet 文件存储在以下文件夹路径中:
PARTITION_YEAR=2017/PARTITION_MONTH=07/PARTITION_DAY=12/my-parquet-files-go-here
或
PARTITION_DATE=20170712/my-parquet-files-go-here
如果我需要使用 spark.read.parquet 在 Spark 中读取 7 天的范围,那么这两种选择中的哪一种更推荐?
哪个替代方案更快?
【问题讨论】:
-
第一个选项对我来说很好。分区越多,文件夹的数量就越多。第二个选项将在同一文件夹中为每一天创建文件夹。因此,您的文件夹中将有近 365 个目录,仅用于 1 年的数据。而在第一个选项的情况下,您的数据将被很好地分区和隔离。
-
@ShrinivasDeshmukh:您是否将
PARTITION_DATE=20170712/my-parquet-files-go-here作为第一个选项?它将创建更少的文件夹。我没听错吗? -
不,{PARTITION_YEAR=2017/PARTITION_MONTH=07/...}我提到了这个选项
-
PARTITION_DATE=20170712/my-parquet-files-go-here,这将在您的主文件夹中创建更多目录。 {PARTITION_YEAR=2017/PARTITION_MONTH=07/...} 这将形成一个树结构,其根部将是“年”文件夹,月份将是第一个子文件夹,“日期”将是第二个子文件夹。跨度>
-
为什么这个问题被否决???
标签: scala amazon-web-services apache-spark amazon-s3 apache-spark-sql