2016-08-24 30 views
0

所以我尝试了级联框架,并且能够在本地运行应用程序。作为下一步,我希望使用Cascading将文件从S3下载到本地文件系统。我打算使用FileTap。当我谷歌,我发现S3FS,看起来像它的弃用。有人能指引我走向正确的方向吗?换句话说,创建带有访问标识和秘密密钥的Amazon S3的FileTap的正确方法是什么?Amazon S3的层叠Tap配置到本地文件系统

+0

https://github.com/s3fs-fuse/s3fs-fuse仍在积极开发中。 –

回答

1

尽管此代码适用于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功能并使用它。

相关问题