Date 将文件夹名称添加到输出文件夹

Date 将文件夹名称添加到输出文件夹,date,hadoop,logging,text,apache-pig,Date,Hadoop,Logging,Text,Apache Pig,我有HDFS中的下一个目录结构: logs_folder |---2021-03-01 |---log1 |---log2 |---log3 2021-03-02 |---log1 |---log2 2021-03-03 |---log1 |---log2 ... 日志由文本数据组成。数据中没有日期,因为它已在文件夹名称中

我有HDFS中的下一个目录结构:

logs_folder
   |---2021-03-01
          |---log1
          |---log2
          |---log3
       2021-03-02
          |---log1
          |---log2
       2021-03-03
          |---log1
          |---log2
...
日志由文本数据组成。数据中没有日期,因为它已在文件夹名称中。我想读取所有日志并以以下格式保存它们:

date    id
where id-日志中的字段,但我需要从文件夹名称中获取日期。 预期产出:

2021-03-01    id1
2021-03-01    id2
...
2021-03-02    id234
2021-03-02    id456
...
如何将文件夹名称中的日期添加到输出?


我发现了一个关于如何在读取时向数据添加完整路径名的问题:

A = LOAD '/logs_folder/*' using PigStorage(',','-tagPath'); 
DUMP A  ;


非常接近,但如何仅获取父文件夹名称而不是完整路径?

最后我使用了这种方法:

  • 使用`-tagPathz属性加载数据-它将列添加到加载的数据中,并包含每个文件的完整路径
  • 使用正则表达式仅筛选父文件夹
  • 代码示例:

    hadoop_data = LOAD '/logs_folder/*' USING PigStorage(',', '-tagPath') as (filepath:chararray, id:chararray, feature:chararray, value:chararray);
    hadoop_data = FOREACH hadoop_data GENERATE id,(chararray)REGEX_EXTRACT(filepath,'.*\\/(.*)\\/',1) as path,
        feature,value;
    
    我的数据由3个字段组成-id、feature、value,但您可以看到其中有4个字段-
    filepath
    字段已添加