Java 火花中的文本流
我有以下代码:Java 火花中的文本流,java,apache-spark,spark-streaming,Java,Apache Spark,Spark Streaming,我有以下代码: SparkConf sparkConf = new SparkConf().setAppName("My app") .setMaster("local[4]") .set("spark.executor.memory", "2g") .set("spark.driver.allowMultipleContexts", "true"); JavaStreamingContext jssc = new JavaStreamingCo
SparkConf sparkConf = new SparkConf().setAppName("My app")
.setMaster("local[4]")
.set("spark.executor.memory", "2g")
.set("spark.driver.allowMultipleContexts", "true");
JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, Durations.seconds(2));
JavaDStream<String> trainingData = jssc.textFileStream("filesDirectory");
trainingData.print();
jssc.start();
jssc.awaitTermination();
SparkConf SparkConf=new SparkConf().setAppName(“我的应用程序”)
.setMaster(“本地[4]”)
.set(“spark.executor.memory”、“2g”)
.set(“spark.driver.allowMultipleContexts”、“true”);
JavaStreamingContext jssc=新的JavaStreamingContext(sparkConf,Durations.seconds(2));
JavaDStream trainingData=jssc.textFileStream(“filedirectory”);
trainingData.print();
jssc.start();
jssc.aittimination();
不幸的是,要流式传输目录中存在的任何文件,我必须编辑此文件并在启动流上下文后重命名它,否则它将不会被处理
我应该编辑和重命名每个文件来处理它,还是有另一种方法来处理现有文件,只需编辑和保存它们
另外,当我将新文件移动到此目录时,我还需要编辑并重命名此文件以流式传输
JavaStreamingContext.textFileStream
返回一个FileInputDStream
,用于在定期添加/更新文件夹中的文件时监视文件夹。仅当添加/更新新文件时,才会在每两秒后收到通知
如果您的意图只是读取文件,则可以使用
查看源代码中的文档
JavaStreamingContext.textFileStream
返回一个FileInputDStream
,用于在定期添加/更新文件夹中的文件时监视文件夹。仅当添加/更新新文件时,才会在每两秒后收到通知
如果您的意图只是读取文件,则可以使用
查看源代码中的文档
在移动到目标目录之前,请尝试触摸文件。 下面是javadoc所说的
- 确定给定的
是否是批路径
的新文件。就这样currentTime
- 如果接受,则必须通过以下标准
- 它必须通过用户提供的文件筛选器
- 它必须比忽略阈值新。假定文件的时间早于忽略时间
- 阈值已被考虑,或者在开始之前是现有文件
- (当newFileOnly=true时)
- 它不能出现在此类记住的最近选定的文件中
- 它不能比该批处理的时间(即
)新currentTime
- 它不能比该批处理的时间(即
- 正在测试文件。如果驱动程序已恢复,并且缺少批处理,则可能会发生这种情况
- (停机期间)正在生成。在这种情况下,可能会生成一批时间T
- 在时间T+x。假设x=5。如果批处理T包含mod time T+5的文件,那么坏的事情可能会发生
- 发生。假设所选文件被记住60秒。在时间t+61时
- 该批时间t被遗忘,忽略阈值仍为t+1
- mod time T+5的文件不会被记住,也不能被忽略(因为T+5>T+1)
- 因此,它们可以再次被选为新文件。为了防止这种情况,修改时间较长的文件
- 不考虑当前批处理时间以外的时间。 *
- 确定给定的
是否是批路径
的新文件,以便currentTime
- 如果接受,则必须通过以下标准
- 它必须通过用户提供的文件筛选器
- 它必须比忽略阈值新。假定文件比忽略阈值旧
- 阈值已被考虑,或者在开始之前是现有文件
- (当newFileOnly=true时)
- 它不能出现在此类记住的最近选定的文件中
- 它不能比该批处理的时间(即
)新currentTime
- 它不能比该批处理的时间(即
- 正在测试文件。如果驱动程序已恢复,并且缺少批处理,则可能会发生这种情况
- (停机期间)正在生成。在这种情况下,可能会生成一批时间T
- 在时间T+x。假设x=5。如果批处理T包含mod time T+5的文件,那么坏的事情可能会发生
- 发生。假设所选文件被记住60秒。在时间t+61时
- 该批时间t被遗忘,忽略阈值仍为t+1
- mod time T+5的文件不会被记住,也不能被忽略(因为T+5>T+1)
- 因此,它们可以再次被选为新文件。为了防止这种情况,修改时间较长的文件
- 不考虑当前批处理时间以外的时间。 *
/**
* Create a input stream that monitors a Hadoop-compatible filesystem
* for new files and reads them as text files (using key as LongWritable, value
* as Text and input format as TextInputFormat). Files must be written to the
* monitored directory by "moving" them from another location within the same
* file system. File names starting with . are ignored.
*/