ошибка при настройке состояния бэкэнда для использования hdfs - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь установить состояние бэкенда в hdfs

val stateUri = "hdfs/path_to_dir"
val backend: RocksDBStateBackend = new RocksDBStateBackend(stateUri, true)
env.setStateBackend(backend)

Я бегу с flink 1.7.0 со следующими зависимостями (я пробовал все комбинации):

   "org.apache.flink"    %% "flink-connector-filesystem"         % flinkV
"org.apache.flink"    % "flink-hadoop-fs"                     % flinkV
"org.apache.hadoop"   % "hadoop-hdfs"                         % hadoopVersion
"org.apache.hadoop"   % "hadoop-common"                       % hadoopVersion

Однако при запуске банки я получаю эту ошибку:

Caused by: org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Could not find a file system implementation for scheme 'hdfs'. The scheme is not directly supported by Flink and no Hadoop file system to support this scheme could be loaded.
    at org.apache.flink.core.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:403)
    at org.apache.flink.core.fs.FileSystem.get(FileSystem.java:318)
    at org.apache.flink.core.fs.Path.getFileSystem(Path.java:298)
    at org.apache.flink.runtime.state.filesystem.FsCheckpointStorage.<init>(FsCheckpointStorage.java:58)
    at org.apache.flink.runtime.state.filesystem.FsStateBackend.createCheckpointStorage(FsStateBackend.java:444)
    at org.apache.flink.contrib.streaming.state.RocksDBStateBackend.createCheckpointStorage(RocksDBStateBackend.java:407)
    at org.apache.flink.runtime.checkpoint.CheckpointCoordinator.<init>(CheckpointCoordinator.java:249)
    ... 17 more
Caused by: org.apache.flink.core.fs.UnsupportedFileSystemSchemeException: Hadoop is not in the classpath/dependencies.
    at org.apache.flink.core.fs.UnsupportedSchemeFactory.create(UnsupportedSchemeFactory.java:64)
    at org.apache.flink.core.fs.FileSystem.getUnguardedFileSystem(FileSystem.java:399)
    ... 23 more

любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 20 декабря 2018

Для доступа к пути hdfs:// не обязательно связывать flink-hadoop-fs с вашей работой, если у вас есть flink-shaded-hadoop2-uber-1.8-SNAPSHOT.jar в папке lib вашей установки Flink.

Еслиу вас нет этой зависимости в вашей папке lib, тогда я бы предложил использовать flink-fs-hadoop-shaded в качестве зависимости, поскольку она также перемещает зависимости Hadoop.

Кроме того, важно, чтобы эта зависимость также была включенав твоей получившейся работе баночка.Поэтому, пожалуйста, убедитесь, что вы создали Uber-JAR с sbt-assembly плагином.

...