我想在配置单元中创建表
CREATE TABLE table (
a string
,b string
)
PARTITIONED BY ( pr_filename string )
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ('input.regex'='reg_exp') ;
但源数据具有以“#”开头的多行标题
# <some comment>
#
# <some other comments>
# <some other comments>
# <some other comments>
#
a,b
1,2
8,2
8,9
是否可以写reg\u exp来过滤掉所有以所选字符开头的行,或者我必须使用临时表来处理这个头?
1条答案
按热度按时间ui7jx7zq1#
如果您尝试这样过滤:
行将返回空值,您可以过滤这样的记录。
regexserdejavadocs说:在反序列化阶段,如果一行与regex不匹配,那么该行中的所有列都将为null。如果一行与regex匹配,但包含的组少于预期的组,则缺少的组将为null。如果一行与regex匹配,但有多于预期的组,则忽略其他组
解决方案是在从中间表中进行选择时使用中间表+筛选器行。