Hadoop 如何使用数据上的某个键将HDFS文件拆分为多个目录
我有一个包含以下示例数据的HDFS文件 id名称时间戳Hadoop 如何使用数据上的某个键将HDFS文件拆分为多个目录,hadoop,apache-pig,hdfs,Hadoop,Apache Pig,Hdfs,我有一个包含以下示例数据的HDFS文件 id名称时间戳1 Lorem 2013-01-012 Ipsum 2013-02-01 3 Ipsum 2013-03-01 现在我想以/data/YYYY/MM/DD格式将数据拆分到多个目录中,例如记录1转到目录/data/2016/01/01 pig中有多个存储UDF,可以按年份、月份或日期拆分为单个目录。有什么方法可以把我分成多个目录吗 能否在时间戳列上创建一个蜂窝分区表,并使用HCatStorer仅将数据存储在pig中 通过这种方式,您可能无法获得
1 Lorem 2013-01-01
2 Ipsum 2013-02-01
3 Ipsum 2013-03-01
现在我想以
/data/YYYY/MM/DD
格式将数据拆分到多个目录中,例如记录1转到目录/data/2016/01/01
pig中有多个存储UDF,可以按年份、月份或日期拆分为单个目录。有什么方法可以把我分成多个目录吗 能否在时间戳列上创建一个蜂窝分区表,并使用HCatStorer仅将数据存储在pig中
通过这种方式,您可能无法获得您选择的目录,但您可以按照您的要求在多个目录中获取数据。您可以在时间戳列上创建一个蜂窝分区表,并使用HCatStorer仅在pig中存储数据
通过这种方式,您可能无法获得您选择的目录,但您可以根据需要在多个目录中获取数据。您可以从以下三种方法中进行选择:
分区列名=
:/data/year=2016/month=01/date=07
[cloudera@quickstart ~]$ hadoop fs -ls /user/cloudera/test_dir
Found 2 items
-rw-r--r-- 1 cloudera cloudera 79 2016-08-02 04:43 /user/cloudera/test_dir/test.file1
-rw-r--r-- 1 cloudera cloudera 79 2016-08-02 04:43 /user/cloudera/test_dir/test.file2
Shell脚本:
您可以从以下三种方法中进行选择:
分区列名=
:/data/year=2016/month=01/date=07
[cloudera@quickstart ~]$ hadoop fs -ls /user/cloudera/test_dir
Found 2 items
-rw-r--r-- 1 cloudera cloudera 79 2016-08-02 04:43 /user/cloudera/test_dir/test.file1
-rw-r--r-- 1 cloudera cloudera 79 2016-08-02 04:43 /user/cloudera/test_dir/test.file2
Shell脚本:
谢谢配置单元文件格式看起来不错使用配置单元分区表的唯一问题是它将以ORC文件格式存储文件,我想使用文本格式。你也可以告诉我什么是外壳脚本,将为我做的工作。谢谢。配置单元文件格式看起来不错使用配置单元分区表的唯一问题是它将以ORC文件格式存储文件,我想使用文本格式。你也可以告诉我什么是shell脚本,将为我做的工作。
[cloudera@quickstart ~]$ ./manageFiles.sh
processing /user/cloudera/test_dir/test.file1 file...
dir not exist creating... /user/cloudera/trgt_dir/2013/01/01
file not exist: creating header... /user/cloudera/trgt_dir/2013/01/01/file_2013-01-01
writing line: '1 Lorem 2013-01-01' to file: /user/cloudera/trgt_dir/2013/01/01/file_2013-01-01
dir not exist creating... /user/cloudera/trgt_dir/2013/02/01
file not exist: creating header... /user/cloudera/trgt_dir/2013/02/01/file_2013-02-01
writing line: '2 Ipsum 2013-02-01' to file: /user/cloudera/trgt_dir/2013/02/01/file_2013-02-01
dir not exist creating... /user/cloudera/trgt_dir/2013/03/01
file not exist: creating header... /user/cloudera/trgt_dir/2013/03/01/file_2013-03-01
writing line: '3 Ipsum 2013-03-01' to file: /user/cloudera/trgt_dir/2013/03/01/file_2013-03-01
processing /user/cloudera/test_dir/test.file2 file...
writing line: '1 Lorem 2013-01-01' to file: /user/cloudera/trgt_dir/2013/01/01/file_2013-01-01
writing line: '2 Ipsum 2013-02-01' to file: /user/cloudera/trgt_dir/2013/02/01/file_2013-02-01
writing line: '3 Ipsum 2013-03-01' to file: /user/cloudera/trgt_dir/2013/03/01/file_2013-03-01
[cloudera@quickstart ~]$ hadoop fs -cat /user/cloudera/trgt_dir/2013/03/01/file_2013-03-01
id name timestamp
3 Ipsum 2013-03-01
3 Ipsum 2013-03-01
[cloudera@quickstart ~]$