java—按每个字符串中的最后一个逗号拆分数组中的字符串

mzmfm0qo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(551)

比方说,我在配置单元中有一个字符串数组,例如:

hive> select array from my_table;
["\"string1\"","\"string2_component_a\",\"string2_component_b\"","\"string3_component_a\",\"string3_component_b\",\"string3_component_c\""]

如您所见,有以下三个字符串:

"string1"
"string2_component_a","string2_component_b"
"string3_component_a","string3_component_b","string3_component_c"

我想要的是用每个字符串中的最后一个逗号分割每个元素。因此,生成的数组应包含以下5个组件:

"string1"
"string2_component_a"
"string2_component_b"
"string3_component_a","string3_component_b"
"string3_component_c"

有没有一种方法可以在Hive中实现这一点?

s1ag04yj

s1ag04yj1#

一行使用 String.split(String reges,int limit) ApacheCommons StringUtils.countMatches ```
yourString.split(",", StringUtils.countMatches(yourString, ".") - 1);

更新:
你确定我能用它吗?
根据hive文档:
要求Java1.7注意:HiveVersion1.2以后的版本需要Java1.7或更新的版本。配置单元版本0.14到1.1也适用于Java1.6。强烈建议用户开始使用Java1.8(参见hive-8607)。
所以是的,你可以使用 `String.split` 以及 `StringUtils` 从 `Apache Commons` 没有任何问题。
yvfmudvl

yvfmudvl2#

还要注意谷歌Guava图书馆。事实上,拆分器是如此强大https://github.com/google/guava/wiki/stringsexplained#splitter

相关问题