hive regex serde用于具有5000个字段的行

zwghvu4y  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(365)

我们得到这样的行:

aa |-| bb |-| cc |-|

我们要提取以|-|分隔的字段。我知道一个解决办法是:

CREATE TABLE rating_regex(
field1 string, field2 string, field3 string) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH serdeproperties("input.regex" = "(.+)\\|\\-\\|(.+)\\|\\-\\|(.+)\\|\\-\\|",
"output.format.string" = "%1$s %2$s %3$s")
STORED AS TEXTFILE;

但是如果我们得到的不是三块地而是5000块呢?如何编写regex模式而不重复(+)\\-\\ 5000次?

oxalkeyp

oxalkeyp1#

^(?:(?:.+?)\|\-\|(?:\s|$)){3}$

试试这个。看演示。你可以扩展到你想要的 500 .
https://regex101.com/r/nl5yl3/20

相关问题