Hadoop Spark saveAsTextFile创建目录
我已经使用ApacheSpark在java中实现了以下代码。 我正在AWS EMR上运行这个程序。 我刚刚从文件中的单词计数示例中实现了一个简单的程序。 我正在从HDFS读取文件Hadoop Spark saveAsTextFile创建目录,hadoop,apache-spark,amazon-emr,Hadoop,Apache Spark,Amazon Emr,我已经使用ApacheSpark在java中实现了以下代码。 我正在AWS EMR上运行这个程序。 我刚刚从文件中的单词计数示例中实现了一个简单的程序。 我正在从HDFS读取文件 public class FileOperations { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("HDFS"); JavaSparkConte
public class FileOperations {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("HDFS");
JavaSparkContext sparkContext = new JavaSparkContext(conf);
JavaRDD<String> textFile = sparkContext.textFile("hdfs:/user/hadoop/test.txt");
System.out.println("Program is stared");
JavaPairRDD<String, Integer> counts = textFile
.flatMap(s -> Arrays.asList(s.split(" ")).iterator())
.mapToPair(word -> new Tuple2<>(word, 1))
.reduceByKey((a, b) -> a + b);
counts.foreach(f -> System.out.println(f.toString()));
counts.saveAsTextFile("hdfs:/user/hadoop/output.txt");
System.out.println("Program finished");
}
}
公共类文件操作{
公共静态void main(字符串[]args){
SparkConf conf=new SparkConf().setAppName(“HDFS”);
JavaSparkContext sparkContext=新的JavaSparkContext(conf);
javarddtextfile=sparkContext.textFile(“hdfs:/user/hadoop/test.txt”);
System.out.println(“程序启动”);
javapairdd counts=textFile
.flatMap(s->array.asList(s.split(“”).iterator()
.mapToPair(word->new Tuple2(word,1))
.reduceByKey((a,b)->a+b);
counts.foreach(f->System.out.println(f.toString());
saveAsTextFile(“hdfs:/user/hadoop/output.txt”);
System.out.println(“程序完成”);
}
}
上述程序中的问题是counts.saveAsTextFile(“hdfs:/user/hadoop/output.txt”)没有创建文本文件,而是创建了一个目录output.txt
以上代码中有什么错误。
这是我第一次使用Spark和EMR
要么你
.collect()
收集所有数据并将你自己的保存方法写入一个文件,要么你.repartition(1)
重新分区(1)仍然会生成一个目录,但只有一个包含数据的零件文件(零件-00000
)<。您不指定文件名,只指定路径。Spark将在该目录中创建文件。如果查看方法定义,您会发现它需要一个路径:
public void saveAsTextFile(字符串路径)
在您指定的路径中,它将为数据中的每个分区创建一个
部分
文件。这就是它应该如何工作的。您不指定文件名,只指定路径。Spark将在该目录中创建文件,每个分区一个。谢谢。完成。我找到了我的文件。请将您的答案发布在“答案”部分,以便我可以将此问题标记为已解决。如果路径不存在,我是否需要运行mkdir来创建目录结构,然后复制dataSpark来为您执行此操作。它自己创建一个目录并将文件写入其中。正如output.txt是spark在上述场景中创建的目录一样。