我正在使用Java探索Spark Streaming。
我目前已经下载了Cloudera快速启动VM(CDH 5.5)并且我为Spark流编写了一个Java代码
我编写了一个返回JavaPairDStream的程序。当我尝试将输出写入HDFS时,它可以工作,但它创建了多个文件夹(基于时间戳)。文档说它是如何工作的,但有没有办法将输出写入HDFS中的同一文件夹/文件?我尝试使用重新分区(1),但这不起作用
请参阅以下代码:
if (args.length < 3) {
System.err.println("Invalid arguments");
System.exit(1);
}
SparkConf sparkConf = new SparkConf().setMaster("local").setAppName("Product Reco Spark Streaming");
JavaStreamingContext javaStreamContext = new JavaStreamingContext(sparkConf, new Duration(10000));
String inputFile = args[0];
String outputPath = args[1];
String outputFile = args[2];
JavaDStream<String> dStream = javaStreamContext.textFileStream(inputFile);
JavaPairDStream<String, String> finalDStream = fetchProductRecommendation(dStream); // Does some logic to get the final DStream
finalDStream.print();
finalDStream.repartition(1).saveAsNewAPIHadoopFiles(outputPath, outputFile, String.class, String.class, TextOutputFormat.class);
javaStreamContext.start();
javaStreamContext.awaitTermination();
要运行此程序,这是我正在使用的命令
spark-submit --master local /home/cloudera/Spark/JarLib_ProductRecoSparkStream.jar /user/ProductRecomendations/SparkInput/ /user/ProductRecomendations/SparkOutput/ productRecoOutput
如果您需要更多信息,请告诉我,因为这是我第一次编写火花流代码。