4

只是想知道是否可以使用 s3-dist-cp 工具来合并镶木地板文件(快速压缩)。我尝试使用“--groupBy”和“--targetSize”选项,它确实将小文件合并成更大的文件。但是我无法在 Spark 或 AWS Athena 中读取它们。在 aws athena 中,我收到以下错误:

HIVE_CURSOR_ERROR: Expected 246379 values in column chunk at s3://my_analytics/parquet/auctions/region=us/year=2017/month=1/day=1/output123 offset 4 but got 247604 values instead over 1 pages ending at file offset 39

This query ran against the "randomlogdatabase" database, unless qualified by the query. Please post the error message on our forum or contact customer support with Query Id: 4ff77c55-3b69-414d-8fd9-a3d135f5ff2f.

任何帮助表示赞赏。

4

2 回答 2

5

Parquet 文件具有重要的结构。这个页面详细介绍了它,但结果是元数据像 zip 文件一样存储在最后,连接 Parquet 文件会破坏它们。要合并 Parquet 文件,您需要使用理解 Parquet 文件格式的 Spark 之类的东西。

于 2017-12-20T18:49:56.070 回答
1

根据AWS 文档

S3DistCp 不支持 Parquet 文件的串联

请注意,该网站上的建议是将文件读入 Spark DataFrame,然后在写入之前合并(n),这可能会给大型数据集带来重大挑战,正如API 文档中所警告的那样:

如果你正在做一个剧烈的合并,例如 numPartitions = 1,这可能会导致你的计算发生在比你喜欢的更少的节点上(例如,在 numPartitions = 1 的情况下是一个节点)。

于 2019-06-05T17:09:34.947 回答