将输出写入不同的目录

时间:2016-05-03 14:25:06

标签: java hadoop hdfs scalding

每次运行作业时,是否有任何可用于使输出进入单独的带时间戳(给出格式)目录的设置?

我使用以下Scalding代码来编写流输出:

val out = TypedPipe[MyType]
out.write(PackedAvroSource[MyType]("my/output/path"))

默认情况下,Scalding会替换HDFS中my/output/path目录中的输出。我希望输出进入不同的my/output/path/MMDDyyyyHHmm/路径,具体取决于作业运行的时间。我准备编写一些工具来自己添加一个时间戳,我宁愿使用一些现有的时间戳。如果可用的话。

2 个答案:

答案 0 :(得分:0)

尝试将日期连接到目录。

Date date = new Date();
String direct = "my/output/" + date.toString();
out.write(PackedAvroSource[MyType](direct));

有关日期和时间的详细信息,请单击here

答案 1 :(得分:0)

您可以使用PartitionedDelimited接收器写入多个目录。有关详细信息,请参阅https://github.com/twitter/scalding/blob/develop/scalding-core/src/main/scala/com/twitter/scalding/typed/PartitionedDelimitedSource.scala中的评论。

这会阻止您使用AVRO格式,但也许您可以编写PartitionedPackedAvro