是否有人成功使用Apache Flink 0.9来处理存储在AWS S3上的数据?我发现他们正在使用自己的S3FileSystem而不是Hadoop中的一个...而且看起来它不起作用。 我把以下路径s3://bucket.s3.amazonaws.com/folder 它失败了,但有以下例外:
java.io.IOException:无法建立与Amazon S3的连接: com.amazonaws.services.s3.model.AmazonS3Exception:请求 我们计算的签名与您提供的签名不符。 检查您的密钥和签名方法。 (服务:Amazon S3;状态代码: 403;
答案 0 :(得分:9)
2016年5月更新:Flink文档现在有一页how to use Flink with AWS
此问题已在Flink用户邮件列表中提出,我已在那里回答:http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Processing-S3-data-with-Apache-Flink-td3046.html
TL; DR:
Flink计划
public class S3FileSystem {
public static void main(String[] args) throws Exception {
ExecutionEnvironment ee = ExecutionEnvironment.createLocalEnvironment();
DataSet<String> myLines = ee.readTextFile("s3n://my-bucket-name/some-test-file.xml");
myLines.print();
}
}
将以下内容添加到 core-site.xml ,并将其提供给Flink:
<property>
<name>fs.s3n.awsAccessKeyId</name>
<value>putKeyHere</value>
</property>
<property>
<name>fs.s3n.awsSecretAccessKey</name>
<value>putSecretHere</value>
</property>
<property>
<name>fs.s3n.impl</name>
<value>org.apache.hadoop.fs.s3native.NativeS3FileSystem</value>
</property>
答案 1 :(得分:-1)
您可以从CloudFormation模板的输出部分中指定的S3存储桶中检索工件。 即,在Flink运行时启动并运行后,可以将出租车流处理器程序提交给Flink运行时,以开始对Amazon Kinesis流中的行程事件进行实时分析。
$ aws s3 cp s3://«artifact-bucket»/artifacts/flink-taxi-stream-processor-1.0.jar .
$ flink run -p 8 flink-taxi-stream-processor-1.0.jar --region «AWS region» --stream «Kinesis stream name» --es-endpoint https://«Elasticsearch endpoint»
以上两个命令都使用Amazon的S3作为源,您必须相应地指定工件名称。
注意:您可以按照以下链接使用EMR和S3存储桶创建管道。