0
所以我尝试了级联框架,并且能够在本地运行应用程序。作为下一步,我希望使用Cascading将文件从S3下载到本地文件系统。我打算使用FileTap。当我谷歌,我发现S3FS,看起来像它的弃用。有人能指引我走向正确的方向吗?换句话说,创建带有访问标识和秘密密钥的Amazon S3的FileTap的正确方法是什么?Amazon S3的层叠Tap配置到本地文件系统
所以我尝试了级联框架,并且能够在本地运行应用程序。作为下一步,我希望使用Cascading将文件从S3下载到本地文件系统。我打算使用FileTap。当我谷歌,我发现S3FS,看起来像它的弃用。有人能指引我走向正确的方向吗?换句话说,创建带有访问标识和秘密密钥的Amazon S3的FileTap的正确方法是什么?Amazon S3的层叠Tap配置到本地文件系统
尽管此代码适用于HadoopFlowConnector,但如果使用FileTap,它将与Local Flow连接器一起使用。
public class Main {
public void run(String[] args) {
Properties properties = new Properties();
String accessKey = args[0];
String secretKey = args[1];
// better put these keys to hadoop xml file
// for block file system
properties.setProperty("fs.s3.awsAccessKeyId", accessKey);
properties.setProperty("fs.s3.awsSecretAccessKey", secretKey);
// for s3 native file system
// properties.setProperty("fs.s3n.awsAccessKeyId", accessKey);
// properties.setProperty("fs.s3n.awsSecretAccessKey", secretKey);
// properties.setProperty("fs.defaultFS", "hdfs://localhost:8020/");
// properties.setProperty("fs.permissions.umask-mode", "007");
AppProps.setApplicationJarClass(properties, Main.class);
HadoopFlowConnector flowConnector = new HadoopFlowConnector(
properties);
String input = "s3://my-bucket/my-log.csv";
// If using the native S3
// String input = "s3n://my-bucket/my-log.csv";
Tap inTap = new Hfs(new TextDelimited(false, ";"), input);
Pipe copyPipe = new Pipe("copy");
Tap outTap = new Hfs(new TextDelimited(false, ";"),
"data/output");
FlowDef flowDef = FlowDef.flowDef()
.addSource(copyPipe, inTap)
.addTailSink(copyPipe, outTap);
flowConnector.connect(flowDef).complete();
}
public static void main(String[] args) {
new Main().run(args);
}
}
密码礼貌http://whiteboxdeveloper.blogspot.com/2015/01/processing-data-from-aws-s3-using.html。
我刚刚添加了S3N字符串输入注释行。由于我使用基于S3N的访问,我没有评论S3N功能并使用它。
https://github.com/s3fs-fuse/s3fs-fuse仍在积极开发中。 –