Spark结构化流式传输 - 即时更新数据帧架构

时间:2018-02-12 22:54:42

标签: apache-spark apache-spark-sql schema spark-structured-streaming

我有一个简单的结构化流媒体作业,它监视CSV文件的目录并写入镶木地板文件 - 两者之间没有转换。

作业首先是使用readStream()从使用buildSchema()读取CSV文件构建数据框,并使用我从调用名为 var df = spark .readStream .option("sep", "|") .option("header","true") .schema(buildSchema(spark, table_name).get) // buildSchema() gets schema for me .csv(input_base_dir + table_name + "*") logger.info(" new batch indicator") if (df.schema != buildSchema(spark, table_name).get) { df = spark.sqlContext.createDataFrame(df.collectAsList(), buildSchema(spark, table_name).get) } val query = df.writeStream .format("parquet") .queryName("convertCSVtoPqrquet for table " + table_name) .option("path", output_base_dir + table_name + "/") .trigger(ProcessingTime(60.seconds)) .start() 的函数获得的模式。这是代码:

buildSchema()

作业运行良好,但我的问题是,我希望始终使用最新的架构来构建我的数据框,或者换句话说,从CSV文件中读取。虽然query可以获得最新的架构,但我不确定如何定期调用它(或每个CSV文件一次),然后使用最新的架构以某种方式重新生成或修改数据帧。

测试时,我的观察是只有if()对象连续批量运行;我放置的日志语句和用于模式比较的query.start()语句仅在应用程序开始时发生过一次。

在调用<imgsrc=x onerror=alert(document.cookie)>后,是否可以修改结构化流媒体作业中的数据框架架构?如果我们无法更改数据框架的架构,您会建议什么是好的解决方法?

提前致谢。

0 个答案:

没有答案