Input 配置单元不一致输入文件
我有不一致的日志文件,我想使用动态分区与配置单元进行分区。文件示例: 2013年6月20日20:21:42.637 FLW CPTView::OnInitiaalUpdate nRemoveAppShareQSize0=50000\nInput 配置单元不一致输入文件,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.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),并放弃所有其他格式,如“带宽全局设置:旧的”。在插入最终表时,您可以在上次查询中使用此自定义项
我希望这个解释有助于你的要求