Java 使用wholeTextFiles进行Spark流式处理

Java 使用wholeTextFiles进行Spark流式处理,java,apache-spark,spark-streaming,Java,Apache Spark,Spark Streaming,我正在使用Spark 2.0并尝试使用wholeTextFiles API来流式传输文件。我的Spark程序正在成功读取文件夹中的第一批文件,但我无法流式处理后一批文件 请让我知道如何在使用WholeTextFiles API时传输文件 这是我的密码: SparkConf sparkConf = new SparkConf().setAppName("My app") .setMaster("local")

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

请让我知道如何在使用WholeTextFiles API时传输文件

这是我的密码:

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();

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

“未注册任何输出操作,因此无需执行”错误表明您尚未使用​ 流式传输环境根本不存在

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

根据,在处理流时,应避免将master设置为
local
local[1]
,因为它没有留下核心来处理数据

在本地运行Spark流媒体程序时,不要使用“本地”或 “本地[1]”作为主URL。这两个选项中的任何一个都意味着只有一个 线程将用于在本地运行任务。如果您使用的是 基于接收器的输入数据流(例如插座、卡夫卡、水槽等), 然后将使用单个线程运行接收器,不留下任何错误 用于处理接收数据的线程。因此,在本地运行时, 始终使用“本地[n]”作为主URL,其中n>接收者数量 运行(有关如何设置火花属性的信息,请参见火花属性) 大师)


你没有启动这条流。在对数据执行任何操作之后,都应该启动它,这样sparks就可以开始读取和处理数据;jssc.aittimination();Spark正在处理第一批数据。但没有任何进一步的批处理..用我得到的错误更新了问题..即使在执行df.show()之后,作业也不会流式处理。它只处理第一批,而不是流作业。你能给我一些指导吗。。
java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing to execute
    at scala.Predef$.require(Predef.scala:224)
    at org.apache.spark.streaming.DStreamGraph.validate(DStreamGraph.scala:163)
    at org.apache.spark.streaming.StreamingContext.validate(StreamingContext.scala:513)
    at org.apache.spark.streaming.StreamingContext.liftedTree1$1(StreamingContext.scala:573)
    at org.apache.spark.streaming.StreamingContext.start(StreamingContext.scala:572)
    at org.apache.spark.streaming.api.java.JavaStreamingContext.start(JavaStreamingContext.scala:554)
    at com.comcast.emm.vodip.WholeTextLocal.WholeTextLocal.main(WholeTextLocal.java:225)
Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing to execute
    at scala.Predef$.require(Predef.scala:224)
    at org.apache.spark.streaming.DStreamGraph.validate(DStreamGraph.scala:163)
    at org.apache.spark.streaming.StreamingContext.validate(StreamingContext.scala:513)
    at org.apache.spark.streaming.StreamingContext.liftedTree1$1(StreamingContext.scala:573)
    at org.apache.spark.streaming.StreamingContext.start(StreamingContext.scala:572)
    at org.apache.spark.streaming.api.java.JavaStreamingContext.start(JavaStreamingContext.scala:554)