gpt4 book ai didi

hadoop - pig load udf 用于从多个子目录加载文件

转载 作者:可可西里 更新时间:2023-11-01 14:54:53 26 4
gpt4 key购买 nike

我想在 pig 中编写自定义加载 udf,用于从目录结构加载文件。

目录结构就像一个电子邮件目录。它有一个名为 maildir 的根目录。在这个目录中,我们有个人邮件持有者的子目录。在每个邮件帐户持有者目录中,都有几个子目录,如收件箱、已发送、垃圾箱等。

例如:maildir/mailholdername1/inbox/1.txt maildir/mailholdername2/sent/1.txt

我只想读取所有 mailerholdername 子目录中的收件箱文件。

我无法理解:

  1. 应该将什么作为参数传递给加载 udf
  2. 应该如何解析整个目录结构并只读取相应的收件箱文件。

我想处理一个文件并执行一些数据提取并将其作为一条记录加载。因此,如果有 10 个文件,我得到一个包含 10 条记录的关系此外,我想对这些收件箱文件做一些操作并提取一些数据。

最佳答案

因为你有一个没有可变深度的定义文件夹结构,我认为它就像将以下模式作为输入路径传递一样简单:

A = LOAD 'maildir/*/inbox/1.txt' USING PigStorage('\t') AS (f1,f2,f3)

您可能不需要为此创建自己的 UDF,PigLoader 应该能够处理它们,假设它们采用某种分隔格式(上面的示例假设有 3 个字段,制表符分隔)。

如果每个收件箱中有多个 txt 文件,请使用 *.txt 而不是 1.txt。最后,如果 maildir 根目录不在您的用户主目录中,您应该使用该文件夹的绝对路径,比如 /data/maildir/*/index/*.txt

关于hadoop - pig load udf 用于从多个子目录加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13984972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com