为 S3 中由 Kinesis Consumer 写入的文件添加前缀

Add prefix to the file in S3 getting written by Kinesis Consumer

我正在使用 kinesis 消费者将数据写入 s3 中的文件。我观察到 Kinesis Consumer 正在覆盖该文件。因此,我添加了时间戳目录并将数据写入 s3 时间戳目录,这解决了最重要的问题。

但我仍然想知道如何向 S3 存储桶中的 Kinesis Stream 创建的文件添加前缀 and/or 后缀。我正在使用以下代码写入 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 中创建的文件添加前缀 and/or 后缀。

我终于找到了在 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)