我正在尝试创建一个按单个字段分区的配置单元表。我要处理的数据是日志数据。日志格式为:
日期时间 IPAddress HTTP_METHOD MESSAGE
创建表配置单元查询:
CREATE EXTERNAL TABLE test_Part(
logdate string,
logtime string,
ip string,
message string)
PARTITIONED BY(method string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "(\\d{4}-\\d{2}-\\d{2})\\s(\\d{2}:\\d{2}:\\d{2})\\s(\\d+\\.\\d+\\.\\d+\\.\\d+)\\s(\\S+)\\s(.*$)",
"output.format.string" = "%1$s %2$s %3$s %5$s %4$s"
)
STORED AS TEXTFILE;
并加载脚本:
LOAD DATA LOCAL INPATH '/home/user/tools/apache-hive-1.2.2-bin/scripts/sample1.log' OVERWRITE INTO TABLE test_Part PARTITION(method='GET');
当我在上表上运行选择查询时,它给了我错误消息
因异常 java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException 失败:匹配组的数量与列的数量不匹配
我错过了什么?