如何使用pentaho水壶从s3桶加载多个文件

时间:2017-01-23 07:11:53

标签: amazon-s3 pentaho kettle

我想使用步骤S3 CSV Input从s3存储桶加载多个文件,然后转换并加载回S3。但我可以看到此步骤一次只支持一个文件,我需要提供文件名,有没有办法通过只提供桶名<s3-bucket-name>/*一次加载所有文件?

2 个答案:

答案 0 :(得分:2)

S3-CSV-Input的灵感来自CSV-Input,并且不支持像Text-File-Input这样的多文件处理。您必须先retrieve the filenames,因此您可以像使用CSV-Input一样遍历文件名列表。

答案 1 :(得分:0)

两个选项:

AWS CLI方法

  1. 编写一个简单的shell脚本,该脚本调用AWS CLI。把它放在你的路径。称为s3.sh

    aws s3 ls s3://bucket.name/path | cut -c32-
    

    在PDI中:

  2. 生成行:Limit 1,字段:Name:进程,Type:字符串,Value s3.sh

  3. 执行流程:Process field:流程Output Line Delimiter |

  4. 将字段拆分为行:Field to split:结果输出。 Delimiter | New field name:文件名

  5. S3 CSV输入:The filename field:文件名

S3本地同步

使用s3fs

将S3目录挂载到本地目录

如果该存储区目录中有许多大文件,那么它的运行速度将不会如此之快...如果您的PDI在Amazon计算机上运行,​​则可能没问题

然后使用标准的文件读取工具

$ s3fs my-bucket.example.com/path/ ~/my-s3-files -o use_path_request_style -o url=https://s3.us-west-2.amazonaws.com