如何在Spark结构化流媒体中将流数据集转换为JavaRDD

时间:2018-03-14 19:18:31

标签: apache-spark dataframe dataset rdd spark-structured-streaming

我有一个从hdfs路径读取的结构化流应用程序。

structStream = spark.readStream().format("text").load(parameters.get("input"));

JavaRDD<String> transformedstructStreamRDD = structStream.as(Encoders.STRING()).toJavaRDD();

Dataset<Row> df = spark.createDataFrame(transformedstructStreamRDD, String.class);
//Dataset<Row> df = structStream.as("dummy");

StreamingQuery streamingQuery = df.writeStream().format("csv").option("checkpointLocation","/user/hadoop/chkpointpath/").option("path", "/user/hadoop/output/").start();
try {
        streamingQuery.awaitTermination();
    } catch (StreamingQueryException e) {
        e.printStackTrace();
    }

以上代码在发生RDD转换时失败。如果我注释掉第2行和第3行代码,并取消注释第4行,则启动streamin应用程序。但我希望RDD转换发生,所以我可以在RDD上进行进一步的转换。任何帮助表示赞赏。 TIA。我面临的例外是:

org.apache.spark.sql.AnalysisException: Queries with streaming sources must be executed with writeStream.start();;

0 个答案:

没有答案