使用wholeTextFiles进行Spark Streaming

时间:2017-04-05 15:50:19

标签: java apache-spark spark-streaming

我正在使用Spark 2.0并尝试使用wholeTextFiles API来传输文件。我的Spark程序正在成功读取文件夹中的第一批文件,但我无法流式传输后一批文件..

请告诉我如何在使用WholeTextFiles API时传输文件。

这是我的代码:

x <- c("Dec-06", "Jan-90", "Feb-76 ")

Spark正在处理第一批数据。但不是任何进一步的批次..我不是在这里使用javaDStream,这可能会导致此错误。我如何从wholetextfiles api中获取javaDStream?

更新错误:

SparkConf sparkConf = new SparkConf().setAppName("My app")
                           .setMaster("local")
                            .set("spark.driver.allowMultipleContexts", "true");

JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, Durations.seconds(15));

JavaPairRDD<String, String> WholeTextLocalFiles = jssc.sparkContext().wholeTextFiles("C:/Users/my/files/abcd7/simple/*.txt");

JavaRDD<String> stringRDD = wholeTextFiles.map(
    -----
    ----
    return mySchema;);

SQLContext hc = new HiveContext(jssc.sparkContext());

Dataset<Row> df = hc.createDataFrame(schemaRDD, mySchema.class);

df.createOrReplaceTempView("myView");

df.show();    
jssc.start();
jssc.awaitTermination();

2 个答案:

答案 0 :(得分:0)

wholeTextFile将返回RDD。除非你对它执行某些操作,否则spark不会启动任何操作。

错误“没有注册输出操作,因此无需执行任何操作”告诉您,您根本没有使用流式上下文。

查看spark文档中有关如何编写流媒体作业的示例。

答案 1 :(得分:0)

根据spark docs,您应避免在处理流时将master设置为locallocal[1],因为它不会留下核心来处理数据。

  

在本地运行Spark Streaming程序时,请勿使用“local”或   “local [1]”作为主URL。这些都意味着只有一个   线程将用于本地运行任务。如果你正在使用   输入DStream基于接收器(例如插座,Kafka,Flume等),   那么单线程将用于运行接收器,不会   用于处理接收数据的线程。因此,在本地运行时,   总是使用“local [n]”作为主URL,其中n>接收器数量   运行(有关如何设置的信息,请参阅Spark Properties)   主站)。