我是Spark Streaming的新手。
我想监视并解压缩特定目录中的所有.zip文件。 我引用了http://cutler.io/2012/07/hadoop-processing-zip-files-in-mapreduce/并编写了以下代码
JavaPairInputDStream<Text, BytesWritable> streamlogFiles=ssc.fileStream(logDir, Text.class, BytesWritable.class, ZipFileInputFormat.class);
但是,我发现fileStream()不处理exsitedin /移动到指定目录的zip文件。
我有什么想念吗?
答案 0 :(得分:0)
您可以在此处使用ZipFileInputFormat:https://github.com/cotdp/com-cotdp-hadoop/tree/master/src/main/java/com/cotdp/hadoop
使用
创建一个fileStreamval files = ssc.fileStream[Text, BytesWritable, ZipFileInputFormat](someInputDirectory)
files.foreachRDD{ rdd =>
rdd.foreachPartition { partition =>
partition.foreach { record =>
process(record._1.toString, record._2)
}
}
}
其中record._1.toString
是record._2
的文件名是该文件的BytesWriteable。如果你不希望InputFormat解压缩.zip,你需要一个不同的自定义FileInputFormat或者必须修改ZipFileInputFormat。
为了测试这一点,请确保您要添加到someInputDirectory
的.zip文件上次修改了&lt; 1分钟前,否则SparkStreaming默认会忽略它。