s3 中的数据分区
Data partitioning in s3
我们在关系数据库中有我们的数据在单个 table 中,列 ID 和日期是这样的。
productid date value1 value2
1 2005-10-26 24 27
1 2005-10-27 22 28
2 2005-10-26 12 18
尝试将它们作为镶木地板加载到 s3 并在配置单元中创建元数据以使用 athena 和 redshift 查询它们。我们最频繁的查询将过滤产品 ID、日、月和年。因此,尝试以一种具有更好查询性能的方式加载数据分区。
据我了解,我可以这样创建分区
s3://my-bucket/my-dataset/dt=2017-07-01/
...
s3://my-bucket/my-dataset/dt=2017-07-09/
s3://my-bucket/my-dataset/dt=2017-07-10/
或者像这样,
s3://mybucket/year=2017/month=06/day=01/
s3://mybucket/year=2017/month=06/day=02/
...
s3://mybucket/year=2017/month=08/day=31/
- 因为我有 7 年的数据,这在查询方面会更快。
- 另外,如何在此处为产品 ID 添加分区?这样它会更快。
- 我如何使用 spark scala 创建这个 (s3://mybucket/year=2017/month=06/day=01/) 具有 key=value 的文件夹结构。?有例子吗?
我们这样分区,
s3://bucket/year/month/year/day/hour/minute/product/region/availabilityzone/
s3://bucketname/2018/03/01/11/30/nest/e1/e1a
分钟四舍五入为 30 分钟。如果您的流量很高,您可以在几分钟内获得更高的分辨率,或者您可以按小时甚至按天减少。
它根据我们要查询的数据(使用 Athena 或 Redshift Spectrum)和持续时间提供了很多帮助。
希望对您有所帮助。
我们在关系数据库中有我们的数据在单个 table 中,列 ID 和日期是这样的。
productid date value1 value2
1 2005-10-26 24 27
1 2005-10-27 22 28
2 2005-10-26 12 18
尝试将它们作为镶木地板加载到 s3 并在配置单元中创建元数据以使用 athena 和 redshift 查询它们。我们最频繁的查询将过滤产品 ID、日、月和年。因此,尝试以一种具有更好查询性能的方式加载数据分区。
据我了解,我可以这样创建分区
s3://my-bucket/my-dataset/dt=2017-07-01/
...
s3://my-bucket/my-dataset/dt=2017-07-09/
s3://my-bucket/my-dataset/dt=2017-07-10/
或者像这样,
s3://mybucket/year=2017/month=06/day=01/
s3://mybucket/year=2017/month=06/day=02/
...
s3://mybucket/year=2017/month=08/day=31/
- 因为我有 7 年的数据,这在查询方面会更快。
- 另外,如何在此处为产品 ID 添加分区?这样它会更快。
- 我如何使用 spark scala 创建这个 (s3://mybucket/year=2017/month=06/day=01/) 具有 key=value 的文件夹结构。?有例子吗?
我们这样分区,
s3://bucket/year/month/year/day/hour/minute/product/region/availabilityzone/
s3://bucketname/2018/03/01/11/30/nest/e1/e1a
分钟四舍五入为 30 分钟。如果您的流量很高,您可以在几分钟内获得更高的分辨率,或者您可以按小时甚至按天减少。
它根据我们要查询的数据(使用 Athena 或 Redshift Spectrum)和持续时间提供了很多帮助。
希望对您有所帮助。