0

我正在尝试使用这行代码在 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;
4

1 回答 1

1

不,您不能使用 java.nio.Files 写入 HDFS。Java 类不知道 hadoop 集群中的 NameNode 和 DataNodes。您需要使用 hadoop 库与 HDFS 进行通信。

这里我有一个使用 Java 写入 HDFS 的示例:

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

于 2016-06-21T19:42:32.887 回答