我的hdfs目录结构如下:
/home/date_1/A/file.txt
/home/date_1/B/file.txt
/home/date_2/A/file.txt
/home/date_2/B/file.txt
...
我可以创建一个外部表
CREATE EXTERNAL TABLE table_name(col1 int, col2 string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORE AS TEXTFILE
LOCATION '/home'
但我不知道如何将文件夹信息“a”或“b”引入表中。我能做什么?谢谢!
2条答案
按热度按时间5rgfhyps1#
在配置单元中,您可以使用虚拟列来读取基础文件名。
INPUT__FILE__NAME
将提供数据用于获取文件名的文件列表。所以您需要首先创建外部表(正如您所做的那样)。然后在查询外部表时,可以使用虚拟列并拆分数据,如下所示:
有关配置单元中虚拟列的详细信息。
omjgkv6w2#
您是否使用mapreduce作为配置单元执行引擎?您应该能够简单地指示框架遍历所有子目录。