我正在使用kinesis使用者在s3中将数据写入文件。我发现Kinesis Consumer正在覆盖该文件。因此,我添加了timestamp目录并将数据写入s3时间戳目录,从而解决了最重要的问题。
但我仍然想知道如何在S3存储桶中由Kinesis Stream创建的文件中添加前缀和/或后缀。我正在使用以下代码写入s3,
rdd.coalesce(1).saveAsTextFile(String.format("%s/%s/%s/%s/%s/%s/%s/"
, <baseOutputDir>
, <eventsOutputSubDir>
, <year-value>, <month-value>, <day-value>, <hour-value>, <timestamp-value>)
, classOf[GzipCodec])
我需要一些关于为在s3中创建的文件添加前缀和/或后缀的帮助。
答案 0 :(得分:0)
我终于找到了为S3 / HDFS中的结果文件添加前缀的答案,
我没有使用saveAsTextFile,而是使用了以下内容,
hadoopConf.set("mapreduce.output.basename", new Date().getTime+"")
rddstr.coalesce(1).map(str => (null, str))
.saveAsNewAPIHadoopFile(String.format("%s/%s/%s/%s/%s/%s/"
, baseOutputDir
, eventsOutputSubDir
, dt._1, dt._2, dt._3, dt._4), classOf[NullWritable],
classOf[String], classOf[TextOutputFormat[NullWritable,
String]], hadoopConf)