我会尽力描述我的要求。但请随时问我是否还不清楚。
我有5个节点(将来会更多)。每个人每5分钟生成一个大的CSV文件(大约1到2 GB)。我需要使用apache spark stream在五分钟内处理这些CSV文件。所以这5个文件是我的输入DStream源。
我打算像下面这样使用textFileStream:
ssc.textFileStream(dataDirectory)
每隔5分钟,我会将这些CSV放在HDFS的目录中。然后使用上面的函数生成inputDStream。
textFileStream需要一个完整的文件而不是5个文件。我不知道如何在HDFS中合并文件
答案 0 :(得分:0)
您始终可以使用通配符来读取目录中的文件。 这应该不是问题。这意味着在任何给定时间,您的DStream的RDD是该给定时间内所有文件的合并结果。
就方法而言,你的工作很简单。
注意:唯一要注意的是CSV文件本身的原子性。您的文件应转到文件夹(您正在查看传入文件)mv
而不是copy
由于 玛纳斯