我正在使用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();
答案 0 :(得分:0)
wholeTextFile将返回RDD。除非你对它执行某些操作,否则spark不会启动任何操作。
错误“没有注册输出操作,因此无需执行任何操作”告诉您,您根本没有使用流式上下文。
查看spark文档中有关如何编写流媒体作业的示例。
答案 1 :(得分:0)
根据spark docs,您应避免在处理流时将master设置为local
或local[1]
,因为它不会留下核心来处理数据。
在本地运行Spark Streaming程序时,请勿使用“local”或 “local [1]”作为主URL。这些都意味着只有一个 线程将用于本地运行任务。如果你正在使用 输入DStream基于接收器(例如插座,Kafka,Flume等), 那么单线程将用于运行接收器,不会 用于处理接收数据的线程。因此,在本地运行时, 总是使用“local [n]”作为主URL,其中n>接收器数量 运行(有关如何设置的信息,请参阅Spark Properties) 主站)。