Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何在CSV文件中的更新行上运行流式查询?_Apache Spark_Spark Structured Streaming - Fatal编程技术网

Apache spark 如何在CSV文件中的更新行上运行流式查询?

Apache spark 如何在CSV文件中的更新行上运行流式查询?,apache-spark,spark-structured-streaming,Apache Spark,Spark Structured Streaming,我有一个csv文件在一个文件夹,是不断更新不断。我需要从这个csv文件中获取输入并生成一些事务。我如何从不断更新的csv文件中获取数据,比如说每5分钟一次 我尝试过以下方法: val csvDF = spark .readStream .option("sep", ",") .schema(userSchema) .csv("file:///home/location/testFiles") 但问题是,它正在监视文件夹是否创建了任何新文件。。。但我的问题是只有一个文件在不断更新

我有一个csv文件在一个文件夹,是不断更新不断。我需要从这个csv文件中获取输入并生成一些事务。我如何从不断更新的csv文件中获取数据,比如说每5分钟一次

我尝试过以下方法:

val csvDF = spark
  .readStream
  .option("sep", ",")
  .schema(userSchema)
  .csv("file:///home/location/testFiles")

但问题是,它正在监视文件夹是否创建了任何新文件。。。但我的问题是只有一个文件在不断更新。

首先,我不确定您是如何到达这里的,因为csv文件应该按顺序写入,这样可以实现更好的输入/输出。因此,我建议您创建一个仅附加的文件,并尝试获取流数据,就像从binlog获取数据一样

但是,如果您必须这样做,我认为StreamingContext可能会对您有所帮助

val ssc = new StreamingContext(new SparkConf(), Durations.milliseconds(1))
val fileStream = ssc.fileStream[LongWritable, Text, TextInputFormat]("/tmp", (x: Path) => true, newFilesOnly = false).map(_._2.toString)

首先,我不确定您是如何到达这里的,因为csv文件应该按顺序写入,这样可以实现更好的输入/输出。因此,我建议您创建一个仅附加的文件,并尝试获取流数据,就像从binlog获取数据一样

但是,如果您必须这样做,我认为StreamingContext可能会对您有所帮助

val ssc = new StreamingContext(new SparkConf(), Durations.milliseconds(1))
val fileStream = ssc.fileStream[LongWritable, Text, TextInputFormat]("/tmp", (x: Path) => true, newFilesOnly = false).map(_._2.toString)
我在一个文件夹位置有一个csv文件,每次都在更新。我需要从这个csv文件中获取输入并生成一些事务。我如何从不断更新的csv文件中获取数据,比如说每5分钟一次

tl;dr它不会起作用

默认情况下,Spark Structured Streaming监视目录中的文件,并为每个新文件触发计算。一旦文件被处理,该文件将不再被处理。这是默认的实现

您可以编写自己的流媒体源来监控文件的更改,但这是一个自定义源开发(在大多数情况下,这还不值得付出努力)

我在一个文件夹位置有一个csv文件,每次都在更新。我需要从这个csv文件中获取输入并生成一些事务。我如何从不断更新的csv文件中获取数据,比如说每5分钟一次

tl;dr它不会起作用

默认情况下,Spark Structured Streaming监视目录中的文件,并为每个新文件触发计算。一旦文件被处理,该文件将不再被处理。这是默认的实现


您可以编写自己的流媒体源来监控文件的更改,但这是一个定制的源代码开发(在大多数情况下,还不值得这么做)。

StreamingContext
是Spark流媒体的一部分,但OP使用Spark结构化流媒体。两个不同的Spark流媒体模块。
StreamingContext
是Spark流媒体的一部分,但OP使用Spark结构化流媒体。两个不同的流式火花模块。