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

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

我们得到这样的行:

  1. aa |-| bb |-| cc |-|

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

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

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

oxalkeyp

oxalkeyp1#

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

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

相关问题