【发布时间】:2021-12-01 13:18:31
【问题描述】:
我有一个连续的随机字符数据文件,没有分隔符,也没有换行符。
例如。 "aaaaabbbbbcccccdddddeeeeefffff..."
我需要将其拆分为 Hive 中的 5 个字符列,例如:
aaaaa,bbbbb,ccccc ddddd,eeeee,fffff
我尝试了以下选项,但它们似乎都不起作用,因为没有分隔符。
-
select substr(data,1,5)first_col, substr(data,6,5)second_col, substr(data,11,5)third_col from testdb1.example_table这将正确地给我第一行,但无法弄清楚我该如何扩展它以用于下一行。 -
使用 regexp_extract 但再次因为没有分隔符来找出第二行,它似乎不起作用。
-
使用 split 或 RegexSerDe。
任何输入都会有所帮助。
【问题讨论】:
-
regex_serde 对此无济于事,因为它无法生成新行。对于未拆分的行 split/substr/regexp_extract 会将整个文件内容作为单行处理,即使它有效,它也是非常低效的并且会导致大数据上的 OOM 在加载数据之前应该拆分行。