Apache spark Spark Streaming找到文件,但声称找不到该文件

Apache spark Spark Streaming找到文件,但声称找不到该文件,apache-spark,pyspark,apache-spark-sql,spark-streaming,Apache Spark,Pyspark,Apache Spark Sql,Spark Streaming,我有下面的-它监视一个目录&每X秒拉一次日志 我的问题是: 我将脚本设置为运行 然后在目录中创建一个文件,比如testfile.txt 然后脚本会错误地说textfile.txt不存在 它找到了文件和文件名,因此它确实存在并找到了它 我能看到的是,我用一个文件定义了路径://,它返回一个找不到文件的错误://。因此,出于某种原因,它似乎缺少了两个//: 谢谢你的帮助 代码 错误 请将文件:///更改为hdfs:// df = spark_session\ .readStream\

我有下面的-它监视一个目录&每X秒拉一次日志

我的问题是:

我将脚本设置为运行 然后在目录中创建一个文件,比如testfile.txt 然后脚本会错误地说textfile.txt不存在 它找到了文件和文件名,因此它确实存在并找到了它

我能看到的是,我用一个文件定义了路径://,它返回一个找不到文件的错误://。因此,出于某种原因,它似乎缺少了两个//:

谢谢你的帮助

代码

错误


请将文件:///更改为hdfs://

df = spark_session\
    .readStream\
    .option('newFilesOnly', 'true')\
    .option('header', 'true')\
    .schema(myschema)\
    .text('hdfs://home/keenek1/analytics/logs/')\ # changed file:/// to hdfs://
    .withColumn("FileName", input_file_name())

下面的问题 如果相同的日志文件被覆盖(比如每小时一次),检查点不会重新处理该文件。我需要它说‘如果修改的时间改变,重新处理’——这可能吗


解决方法是,将您的spark流指向不同的目录,并使用spark侦听器检查实际目录中的文件时间戳。如果文件时间戳有任何更改,请使用新名称将该文件移动到您的流目录


如果您需要代码,请告诉我,我可以在scala中为您提供,可能您需要将其转换为python。

您是在本地还是在集群中运行此代码,如果是集群,则可以使用hdfs://而不是file://is 它正在工作??它是@Srinivas-谢谢!如果可以的话,还有一个问题。如果相同的日志文件被覆盖(比如每小时一次),检查点不会重新处理该文件。我需要它说“如果修改的时间更改,重新处理”-这可能吗?您使用的是哪个版本的spark?解决方法是,将您的spark流指向不同的目录并使用spark侦听器从实际目录检查文件时间戳如果文件时间戳有任何更改,请将该文件以新名称移动到您的流目录..:谢谢-代码将非常有用。HDFS日志文件修改时间在作业启动时设置。因此,如果工作需要20分钟,我如何知道它已经完成&我应该移动文件。此外,如果作业开始时修改时间提前10分钟,Spark Streaming是否会拾取日志文件?这一点很好。。谁将文件推送到hdfs。。在这方面你有控制权吗?不幸的是没有,它们只是正在运行的应用程序日志。我想知道我是否可以设置一个时间延迟-在文件到达5分钟后处理该文件?如果您的数据中有timestamp列,请将max processed timestamp存储在hdfs中的某个位置,并使用该时间戳处理下一个数据。
FileNotFoundException: File file:/home/keenek1/analytics/logs/loggywoggywoo.txt does not exist\
df = spark_session\
    .readStream\
    .option('newFilesOnly', 'true')\
    .option('header', 'true')\
    .schema(myschema)\
    .text('hdfs://home/keenek1/analytics/logs/')\ # changed file:/// to hdfs://
    .withColumn("FileName", input_file_name())