You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matillion ETL能否转换多CSV为Parquet?S3目录合并实现咨询

使用Matillion ETL合并S3日期目录下的CSV为单个Parquet文件

实现步骤

以下以Redshift为例(适配其他数据仓库时调整对应组件即可):

1. 配置S3访问权限

确保Matillion已通过AWS密钥配置好目标S3存储桶的访问权限,能正常读取January/层级下的文件和目录。

2. 搭建迭代式作业流程

新建Matillion作业,按以下组件顺序构建:

2.1 遍历日期目录

  • 添加List S3 Objects组件:
    • 存储桶:指定你的目标S3桶
    • 前缀:January/
    • 勾选「List Directories Only」,仅获取January/下的日期子目录(如January/10/)
  • 添加Iterator组件,将List S3 Objects的输出作为迭代数据源,设置迭代变量current_dir,值绑定到返回的目录路径。

2.2 加载当前目录下的所有CSV

在Iterator组件内部添加S3 Load组件:

  • 数据源:选择已配置的S3连接
  • 文件路径:填写 ${current_dir}*.csv,批量加载该目录下所有CSV
  • 目标表:创建临时表(如temp_daily_csv),勾选「Create Table Automatically」自动匹配CSV字段结构(需确保同目录下所有CSV schema一致)
  • 配置CSV格式:指定分隔符、编码(如逗号分隔、UTF-8)等与你的文件匹配的参数

2.3 导出为Parquet到对应目录

添加Unload to S3组件:

  • 源表:选择临时表temp_daily_csv
  • 目标路径:填写 ${current_dir}AsingleParquetFile.parquet
  • 文件格式:选择「Parquet」,勾选「Overwrite Existing Files」
  • 可选:配置Snappy压缩以减小文件体积

2.4 清理临时资源(可选)

添加Drop Table组件,删除临时表temp_daily_csv,避免占用数据仓库资源。

3. 优化与测试

  • 若需扩展到多个月份,可将January设为变量target_month,方便批量修改前缀
  • 先手动指定current_dir为January/10/进行单目录测试,验证Parquet文件的内容和结构无误后,再运行完整迭代作业

内容的提问来源于stack exchange,提问作者Victor Sotnikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:10:27