在我的场景中,我有不断上传到HDFS的CSV文件。一旦他们的写作最终完成,如何在HDFS目录中处理新文件?
只要新文件上传,我想用Spark SQL处理新文件(例如,计算文件中字段的最大值,将文件转换为parquet
)。即我在每个输入文件和变换/处理的输出文件之间具有一对一映射。
我正在评估Spark Streaming来侦听HDFS目录,然后用Spark来处理“流式文件”。
但是,为了处理整个文件,我需要知道“文件流”何时完成。我想将转换应用于整个文件,以保留文件之间的端到端一对一映射。
如何转换整个文件而不是其微批?
据我所知,Spark Streaming只能将变换应用到批次(DStreams
映射到RDDs
),而不是立即(当其有限的流完成时)整个文件。
这是正确的吗?如果是这样,我应该考虑什么替代方案?
一个文件在被Spark Streaming拾取之前被完全写入HDFS,所以我不明白问题 –
@ cricket_007您能澄清你的意思吗? –