0

我是 PIG 的新手。

实际上,我有一个用例,我必须在每个固定间隔后一次又一次地将数据存储在同一个文件中。但是当我浏览了一些教程和链接时,我没有看到与此相关的任何内容。

我应该如何将数据存储在同一个文件中?

4

2 回答 2

1

不可能。Pig 使用 Hadoop,现在没有“推荐”的附加文件解决方案。

另一点是,只有在使用了一个 mapper 或一个 reducer 并且整个数据流结束时,pig 才会生成一个文件。

你可以:

  1. 提供有关您要解决的问题的更多信息

  2. 不好的解决方案:

2.1。处理猪脚本中的数据

2.2. 从现有文件加载数据

2.3. union 关系 hwre 第一个关系保留新数据,第二个关系保留现有文件中的数据

2.4. 将联合结果存储到新输出

2.5. 用新文件替换旧文件。

很好的解决方案:

创建文件夹 /mydata

在文件夹内创建分区,如果您每小时处理数据,它们可以是 /yyyy/MM/dd/HH

使用 glob 读取数据:

/mydata/*/*/*/*/*

小时分区中的所有文件都将由 PIG/HIVE/MR 或任何 hadoop 工具读取。

于 2013-07-25T11:41:58.843 回答
0

制作一个日期文件夹,例如:/abc/hadoop/20130726/ 在您的内部生成基于时间戳的输出,例如:/abc/hadoop/20130726/201307265465.gz

然后使用getmerge命令将所有数据合并到一个文件中

Usage: hadoop fs -getmerge <src> <localdst> [addnl]

希望它会帮助你。

于 2013-07-26T10:20:35.753 回答