在S3中为文件添加前缀,由Kinesis Consumer编写

时间:2018-03-21 07:45:14

标签: scala amazon-s3 spark-streaming amazon-kinesis

我正在使用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中创建的文件添加前缀和/或后缀的帮助。

1 个答案:

答案 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)