amazon-web-services - 为什么使用 Amazon Athena 复制 Parquet 文件大小会变小
问题描述
我有一个由 Hive 填充的 Hive 分区表,并作为 Parquet 存储在 S3 上。特定分区的数据大小为 3GB。然后我用 Athena 复制一份:
CREATE TABLE tmp_partition
AS SELECT *
FROM original_table
where hour=11
生成的数据大小不到一半 (1.4GB)。可能是什么原因?
编辑:相关配置单元表定义语句:
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://...'
TBLPROPERTIES (
'parquet.compress'='SNAPPY',
'transient_lastDdlTime'='1558011438'
)
解决方案
不同的压缩设置是一种可能的解释。如果您的原始文件没有被压缩或用 Snappy 压缩,那可以解释它。如果您不指定要使用的压缩方式,Athena 将默认为 gzip,它的压缩效果比 Snappy 好。
如果您想要一个更彻底的答案,您将不得不向我们提供更多细节。你是如何创建原始文件的,它们是否被压缩,什么压缩,数据是什么样的,等等。
推荐阅读
- django - 在 Heroku 上部署 Django 应用程序时无法解决 ModuleNotFoundError
- java - 用 Java.awt.graphics 打印的图像模糊?
- flutter-dependencies - Flutter 通知侦听器 v2 示例不会运行
- python - 在 Docker 中使用 pip 安装无法找到模块
- html - 用反应滚动反应导航栏
- google-cloud-run - 如何在构建 Cloud Run 时清除 Kaniko 缓存
- php - 发出 POST 请求时出现推送错误的 Laravel WebSocket
- c# - Xamarin.Forms Shell 页面中的自定义 TitleView(顶部栏)
- java - java spring boot应用程序中的cron表达式问题
- macos - 未找到 Mac MAMP 虚拟主机 404