将JavaPairDStream写入单个HDFS位置

时间:2016-03-17 15:48:18

标签: java hadoop apache-spark spark-streaming

我正在使用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

如果您需要更多信息,请告诉我,因为这是我第一次编写火花流代码。

0 个答案:

没有答案