Input 配置单元不一致输入文件

Input 配置单元不一致输入文件,input,hive,Input,Hive,我有不一致的日志文件,我想使用动态分区与配置单元进行分区。文件示例: 2013年6月20日20:21:42.637 FLW CPTView::OnInitiaalUpdate nRemoveAppShareQSize0=50000\n 2013年6月20日20:21:42.638 FLW\n BandwidthGlobalSettings:旧的带宽公用定义\n 有时,日志文件包含以与日期不同的单词开头的行。每行用分隔符\n分隔 我正在运行命令: CREATE EXTERNAL TABLE IF

我有不一致的日志文件,我想使用动态分区与配置单元进行分区。文件示例:

2013年6月20日20:21:42.637 FLW CPTView::OnInitiaalUpdate nRemoveAppShareQSize0=50000\n
2013年6月20日20:21:42.638 FLW\n
BandwidthGlobalSettings:旧的带宽公用定义\n

有时,日志文件包含以与日期不同的单词开头的行。每行用分隔符\n分隔

我正在运行命令:

CREATE EXTERNAL TABLE IF NOT EXISTS log_messages_temp(日期字符串、时间字符串、严重性字符串、消息字符串)行格式分隔字段,以“\040”LOCATION“/examples/hive/tmp”结尾

如果不存在,则创建外部表日志\u消息被(日期字符串)行格式分隔的(时间字符串、严重性字符串、消息字符串)分区,以“\040”位置“/examples/hive/partitions”结尾的行格式分隔

设置hive.exec.dynamic.partition=true
设置hive.exec.dynamic.partition.mode=nonstrict
从日志消息临时pvs插入覆盖表日志消息分区(日期)选择pvs.time、pvs.severity、pvs.message、pvs.date

结果创建了两个动态分区:date=20/06/13和date=BandwidthGlobalSettings:Old

我想将配置单元定义为忽略以not date字符串开头的行

我该怎么做?或者可能存在另一种解决方案?
谢谢。

我认为您可以编写一个UDF,它将使用正则表达式仅采用日期格式(例如:20/06/13),并放弃所有其他格式,如“带宽全局设置:旧的”。在插入最终表时,您可以在上次查询中使用此自定义项

我希望这个解释有助于你的要求