gpt4 book ai didi

apache-flink - 从 IDE 运行 flink 时如何设置 presto.s3.xxx 属性?

转载 作者:行者123 更新时间:2023-12-02 00:38:10 25 4
gpt4 key购买 nike

我能够使用 ./bin/flink run ... 成功运行保存到 S3 的 flink 作业。

为此,我必须将 flink-s3-fs-presto jar 复制到我的 $FLINK_HOME/lib 文件夹中,我还必须在我的 中配置我的 S3 连接详细信息flink-conf.yaml:

You need to configure both s3.access-key and s3.secret-key in Flink’s flink-conf.yaml:

s3.access-key: your-access-key
s3.secret-key: your-secret-key

Source: flink aws docs

我还必须设置属性 s3.endpoint,因为我使用的是来自 IBM Cloud 的 S3。

当我使用 ./bin/flink run 运行时,一切正常。

但是,当我尝试从我的 IDE (IntelliJ) 运行我的作业时,出现以下错误:

org.apache.flink.runtime.client.JobExecutionException: Cannot initialize task 'DataSink (TextOutputFormat (s3://xxxx/folder) - UTF-8)': Unable to load credentials from service endpoint

我在 IDE 运行作业中设置了一个环境变量,FLINK_CONF_DIR 指向我的 flink-conf.yaml,我可以看到我的配置属性已被提取:

11:04:39,487 INFO  org.apache.flink.configuration.GlobalConfiguration - Loading configuration property: s3.access-key, ****
11:04:39,487 INFO org.apache.flink.configuration.GlobalConfiguration - Loading configuration property: s3.secret-key, ****
11:04:39,487 INFO org.apache.flink.configuration.GlobalConfiguration - Loading configuration property: s3.endpoint, s3-api.us-geo.objectstorage.softlayer.net

但是,当我从我的 IDE 运行时,我收到一个错误提示这些属性没有传递给 presto 库:

Caused by: org.apache.flink.fs.s3presto.shaded.com.amazonaws.SdkClientException: Unable to load credentials from service endpoint

另外,为了验证这个理论,如果我在从 IDE 运行时单步执行代码,我可以看到我的端点属性没有应用:

enter image description here

...深入Hadoop配置,我可以看到flink配置是一个空映射:

enter image description here

再深入一点,我可以看到 org.apache.flink.core.fs.FileSystem#getUnguardedFileSystem() 正在创建一个新的空配置:

        // this "default" initialization makes sure that the FileSystem class works
// even when not configured with an explicit Flink configuration, like on
// JobManager or TaskManager setup
if (FS_FACTORIES.isEmpty()) {
initialize(new Configuration());
}

从 IDE 运行时如何配置 s3.access-keys3.secret-keys3.endpoint 属性?

最佳答案

简单调用

FileSystem.initialize(GlobalConfiguration.loadConfiguration(System.getenv("FLINK_CONF_DIR")));

之前

env.execute()

将解决问题。

请记住,您仍然需要将您的 secret key 和访问 key 放入 flink-conf.yaml 中。

关于apache-flink - 从 IDE 运行 flink 时如何设置 presto.s3.xxx 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48460533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com