如何使用 Flink 在 EMR 上使用 s3a 文件系统?

How can I use the s3a file system on an EMR using Flink?

我正在尝试使用 Table API 在 Flink 应用程序中利用 s3a 文件系统。我使用的是 EMR 6.1(预打包在 Flink 1.11.0 中)。

作为我的应用程序的一部分,我正在 s3 位置上创建一个 table。当我 运行 程序时,出现以下错误:

org.apache.flink.core.fs.UnsupportedFileSystemSchemeException

表示 s3:// 或 s3a:// URI 均不支持文件系统。

根据 Flink's documentation on using s3,如果我在 EMR 上,我不需要将任何文件系统配置为插件。

我仔细检查过我的应用程序中没有包含 fs-s3-hadoop 依赖项。

奇怪的是,当我按照上述说明将文件系统安装为插件时,我可以使它适用于 s3:// URI 但不适用于 s3a://。

似乎 flink 运行 命令没有遵循 EMR 预配置的 hadoop 类路径。

我还希望使用 s3 自定义凭据提供程序来补充我的应用程序,但这在通过插件系统使用时似乎也不起作用,也不会从 Hadoop 类路径中获取。

使用 s3:// 网址

  1. s3a 连接器是 Apache 开源连接器,在 hadoop-aws 中
  2. flink 文档是开源的,参考了 s3a
  3. s3 连接器来自 EMR。
  4. 并且 EMR 没有 contain/support s3a 连接器
  5. 这导致您看到堆栈跟踪