Amazon s3 如何使用pentaho Ketter从s3 bucket加载多个文件
我想使用步骤Amazon s3 如何使用pentaho Ketter从s3 bucket加载多个文件,amazon-s3,pentaho,kettle,Amazon S3,Pentaho,Kettle,我想使用步骤s3csv输入从S3存储桶加载多个文件,然后转换并加载回S3。但是我可以看到这一步一次只支持一个文件,我需要提供文件名,有没有办法通过只提供bucket名称(即/*)一次加载所有文件?s3csv输入的灵感来自CSV输入,不支持像文本文件输入那样的多文件处理,例如您必须首先查看文件名列表,这样您就可以像处理CSV输入那样循环查看文件名列表S3 CSV输入的灵感来自CSV输入,例如,它不支持像文本文件输入那样的多文件处理。首先,您必须这样做,这样您就可以像使用CSV输入一样循环文件名列表
s3csv输入
从S3存储桶加载多个文件,然后转换并加载回S3。但是我可以看到这一步一次只支持一个文件,我需要提供文件名,有没有办法通过只提供bucket名称(即/*
)一次加载所有文件?s3csv输入的灵感来自CSV输入
,不支持像文本文件输入
那样的多文件处理,例如您必须首先查看文件名列表,这样您就可以像处理CSV输入那样循环查看文件名列表S3 CSV输入的灵感来自CSV输入
,例如,它不支持像文本文件输入
那样的多文件处理。首先,您必须这样做,这样您就可以像使用CSV输入一样循环文件名列表
两个选项:
AWS CLI方法
编写一个调用AWS CLI的简单shell脚本。把它放在你的道路上。称之为s3.sh
aws s3 ls s3://bucket.name/path | cut -c32-
在PDI中:
生成行:限制
1,字段:名称
:进程,类型
:字符串,值
s3.sh
执行流程:流程字段
:流程,输出行分隔符
|
将字段拆分为行:要拆分的字段
:结果输出<代码>分隔符
|新字段名
:文件名
S3 CSV输入:文件名字段
:文件名
S3本地同步
使用将S3目录装载到本地目录
如果你的bucket目录中有很多大文件,它就不会运行得那么快……如果你的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
两种选择:
AWS CLI方法
编写一个调用AWS CLI的简单shell脚本。把它放在你的道路上。称之为s3.sh
aws s3 ls s3://bucket.name/path | cut -c32-
在PDI中:
生成行:限制
1,字段:名称
:进程,类型
:字符串,值
s3.sh
执行流程:流程字段
:流程,输出行分隔符
|
将字段拆分为行:要拆分的字段
:结果输出<代码>分隔符
|新字段名
:文件名
S3 CSV输入:文件名字段
:文件名
S3本地同步
使用将S3目录装载到本地目录
如果你的bucket目录中有很多大文件,它就不会运行得那么快……如果你的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
我使用Execute Shell script
获取bucket中所有文件的列表,如何将stdout输出传递到循环?将aws stdout重定向到临时文件,使用例如Text file Input
提取文件名,通过Copy Rows to Result
将文件名传递到循环转换(高级选项)“为每个输入行执行”)。定义一个参数文件名,并在转换的参数设置页面上对其进行初始化。不要忘记启用高级选项“将以前的结果复制到参数”“。玩得开心。我使用执行Shell脚本
获取bucket中所有文件的列表,如何将stdout输出传递到循环?将aws stdout重定向到临时文件,使用例如文本文件输入
提取文件名,通过复制行将文件名传递到结果
到循环转换(高级选项)“为每个输入行执行”)。定义一个参数文件名,并在转换的参数设置页面上对其进行初始化。别忘了启用高级选项“将以前的结果复制到参数”。尽情享受吧。