Java удаляет косую черту из пути и позже дает мне NoSuchFileException

Я пытаюсь написать в Hadoop HDFS, используя эту строку кода:

Files.write(Paths.get("hdfs:////localhost:9000/user/cloudera/trial/"+ "cat.txt","miao miao!".getBytes());

Приложение Spark дает мне это исключение:

java.nio.file.NoSuchFileException: hdfs:/quickstart.cloudera:9000/user/cloudera/trial/cat2

Что, как я понимаю, дает ошибку, потому что после "hdfs:" есть только одна косая черта.
Я помню, что я уже использовал методы java.nio.Files для записи в HDFS, поэтому я исключил бы, что это проблема.
Что я должен сделать, чтобы предотвратить это исключение?

РЕДАКТИРОВАТЬ: раздел импорта

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

1 ответ

Решение

НЕТ, вы не можете использовать java.nio.Files для записи в HDFS. Классы Java не знают о NameNode и DataNodes в кластере hadoop. Вам нужно использовать библиотеки hadoop для взаимодействия с HDFS.

Здесь у меня есть пример для записи в HDFS с использованием Java:

https://github.com/lalosam/HadoopInExamples/blob/master/src/main/java/rojosam/utils/hdfs/CreateTestsFiles.java

Другие вопросы по тегам