提供了分区fs结构,如下所示:
logs
└── log_type
└── 2013
├── 07
│ ├── 28
│ │ ├── host1
│ │ │ └── log_file_1.csv
│ │ └── host2
│ │ ├── log_file_1.csv
│ │ └── log_file_2.csv
│ └── 29
│ ├── host1
│ │ └── log_file_1.csv
│ └── host2
│ └── log_file_1.csv
└── 08
我一直在尝试在impala中创建一个外部表:
create external table log_type (
field1 string,
field2 string,
...
)
row format delimited fields terminated by '|' location '/logs/log_type/2013/08';
我希望 Impala 将递归到子目录和加载所有的csv文件;但没有雪茄。不会抛出错误,但不会将数据加载到表中。
不同的地球像 /logs/log_type/2013/08/*/*
或者 /logs/log_type/2013/08/*/*/*
也不起作用。
有办法吗?或者我应该重组金融服务-有什么建议吗?
3条答案
按热度按时间6rqinv9w1#
另一种方法是使用
LOAD DATA
在 Impala 中的作用。如果您的数据是sequencefile或其他对impala不太友好的格式(impala文件格式),那么您可以像joey在上面所做的那样创建外部表,而不是ALTER TABLE
,你可以这样做hjqgdpho2#
有了新版的 Impala ,你可以使用
命令。更多信息
您需要注意的是,分区字段必须是小写的,因为目录结构是区分大小写的,而impala查询则不是。
zte4gxcn3#
以防你还在寻找答案。您需要手动注册每个分区。
有关注册外部表的详细信息,请参见此处
需要调整表的架构
在您更改了您的模式(包括年、月、日和主机)之后,您必须递归地将每个分区添加到表中。
像这样的
之后你需要刷新 Impala 表。