Hadoop 如何在Apache PIG中在同一文件中添加数据?

Hadoop 如何在Apache PIG中在同一文件中添加数据?,hadoop,apache-pig,Hadoop,Apache Pig,我对猪不熟悉 实际上,我有一个用例,在这个用例中,我必须在每一个固定的时间间隔后将数据一次又一次地存储在同一个文件中。但是当我浏览了一些教程和链接时,我没有看到任何与此相关的内容 如何将数据存储在同一个文件中?这是不可能的。Pig使用Hadoop,目前还没有用于附加文件的“推荐”解决方案 另一点是,仅当使用了一个映射器或一个reducer并且整个数据流结束时,pig才会生成一个文件 你可以: 提供有关您试图解决的问题的更多信息 糟糕的解决方案: 2.1。在pig脚本中处理数据 2.2。从现有文件

我对猪不熟悉

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


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

这是不可能的。Pig使用Hadoop,目前还没有用于附加文件的“推荐”解决方案

另一点是,仅当使用了一个映射器或一个reducer并且整个数据流结束时,pig才会生成一个文件

你可以:

  • 提供有关您试图解决的问题的更多信息

  • 糟糕的解决方案:

  • 2.1。在pig脚本中处理数据

    2.2。从现有文件加载数据

    2.3。联合关系第一个关系保留新数据,第二个关系保留现有文件中的数据

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

    2.5。用新文件替换旧文件

    好的解决方案:

    创建文件夹/mydata

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

    使用globs读取数据:

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

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

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

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

    Usage: hadoop fs -getmerge <src> <localdst> [addnl]
    
    用法:hadoop fs-getmerge[addnl]
    希望它能对您有所帮助。

    反复存储数据是什么意思?您能提供详细信息吗?在这种情况下,您需要反复存储数据again@zjffdu:我的意思是,在处理了一些逻辑后,无论我将得到什么数据,我都希望插入同一个文件中。基本原则是,就像在SQL中,我们使用插入查询一样,我想在我的例子中实现同样的行为。无论如何,谢谢你的回复。:)