我是 PIG 的新手。
实际上,我有一个用例,我必须在每个固定间隔后一次又一次地将数据存储在同一个文件中。但是当我浏览了一些教程和链接时,我没有看到与此相关的任何内容。
我应该如何将数据存储在同一个文件中?
我是 PIG 的新手。
实际上,我有一个用例,我必须在每个固定间隔后一次又一次地将数据存储在同一个文件中。但是当我浏览了一些教程和链接时,我没有看到与此相关的任何内容。
我应该如何将数据存储在同一个文件中?
不可能。Pig 使用 Hadoop,现在没有“推荐”的附加文件解决方案。
另一点是,只有在使用了一个 mapper 或一个 reducer 并且整个数据流结束时,pig 才会生成一个文件。
你可以:
提供有关您要解决的问题的更多信息
不好的解决方案:
2.1。处理猪脚本中的数据
2.2. 从现有文件加载数据
2.3. union 关系 hwre 第一个关系保留新数据,第二个关系保留现有文件中的数据
2.4. 将联合结果存储到新输出
2.5. 用新文件替换旧文件。
很好的解决方案:
创建文件夹 /mydata
在文件夹内创建分区,如果您每小时处理数据,它们可以是 /yyyy/MM/dd/HH
使用 glob 读取数据:
/mydata/*/*/*/*/*
小时分区中的所有文件都将由 PIG/HIVE/MR 或任何 hadoop 工具读取。
制作一个日期文件夹,例如:/abc/hadoop/20130726/ 在您的内部生成基于时间戳的输出,例如:/abc/hadoop/20130726/201307265465.gz。
然后使用getmerge命令将所有数据合并到一个文件中
Usage: hadoop fs -getmerge <src> <localdst> [addnl]
希望它会帮助你。