使用列式存储格式
Apache Parquet
列式存储格式具有以下特征,使其适合用于 Athena:
-
按列压缩,针对列数据类型选择压缩算法,可以节省 Amazon S3 中的存储空间,并减少查询处理期间的磁盘空间和输入/输出。
-
Parquet and ORC 中的谓词下推使得 Athena 查询可以只提取所需的数据块,从而提高查询性能。当 Athena 查询从您的数据获取特定列值时,它使用来自数据块谓词的统计信息(例如最大/最小值)来确定读取还是跳过改数据块。
-
Parquet 和 ORC 中的数据拆分使得 Athena 可以将数据读取拆分为多个读进程,在查询处理期间增加并行度。
要将现有原始数据从其他存储格式转换为 Parquet 或 ORC,您可以在 Athena 中运行 CREATE TABLE AS SELECT (CATS)查询,并将数据存储格式指定为 Parquet 或 ORC,或使用 AWS Glue 爬网程序。
在 Parquet 和 ORC 之间进行选择
将根据具体的使用需求在 ORC(优化的行列式)和 Parquet 之间进行选择。
Apache Parquet 可实现高效的数据压缩和编码方案,非常适合运行复杂的查询和处理大量数据。Parquet 已针对与 Apache Arrow
可通过 ORC 提高效存储 Hive 数据。ORC 文件通常比 Parquet 文件小,ORC 索引可以加快查询速度。此外,ORC 还支持结构、映射和列表等复杂类型。
在 Parquet 和 ORC 之间进行选择时,请注意以下事项:
查询性能 - 由于 Parquet 支持更广泛的查询类型,如果您打算执行复杂查询,建议选择 Parquet。
复杂数据类型 - 如果您使用的是复杂数据类型,建议选择 ORC,因为它支持更广泛的复杂数据类型。
文件大小 - 如果需要考虑磁盘空间,ORC 生成的文件通常较小,可以降低存储成本。
压缩 - Parquet 和 ORC 都可实现优质压缩效果,但最适合您的格式可能取决于您的具体使用案例。
发展 - Parquet 和 ORC 都支持架构发展,这意味着您可以随着时间的推移添加、移除或修改列。
Parquet 和 ORC 都适用于大数据应用程序,但是还是要根据场景需求进行选择。您可能需要对数据和查询进行基准测试,才能了解哪种格式更适合您的使用案例。
转换为列式格式
将 JSON 或 CSV 等源数据轻松转换为列式格式的选项包括使用 CREATE TABLE AS 查询或在 AWS Glue 中运行任务。
-
您可以使用
CREATE TABLE AS
(CTAS) 查询一步将数据转换为 Parquet 或 ORC。有关示例,请参阅 CTAS 查询的示例 页面上的示例:将查询结果写入不同的格式。 -
有关使用 Athena for ETL 将数据从 CSV 转换为 Parquet 的信息,请参阅将 CTAS 和 INSERT INTO 用于 ETL 和数据分析。
-
有关运行 AWS Glue 任务以将 CSV 数据转换为 Parquet 的信息,请参阅 AWS 大数据博客文章 使用 AWS Glue 和 Simple Storage Service (Amazon S3) 构建数据湖基础
中的“将数据从 CSV 转换为 Parquet 格式”。AWS Glue 支持使用相同的技术将 CSV 数据转换为 ORC,或将 JSON 数据转换为 Parquet 或 ORC。