Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按每个字符串中的最后一个逗号拆分数组中的字符串_Java_Arrays_Hadoop_Split_Hive - Fatal编程技术网

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

Java 按每个字符串中的最后一个逗号拆分数组中的字符串,java,arrays,hadoop,split,hive,Java,Arrays,Hadoop,Split,Hive,比如说,我在配置单元中有一个字符串数组,例如: 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","

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

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中实现这一点?

Oneliner使用

  • StringUtils.countMatches


更新:


你确定我可以在蜂巢里用它吗

根据Hive:

要求 Java 1.7 注意:1.2版及以上的配置单元需要Java 1.7或更高版本。配置单元版本0.14到1.1也适用于Java1.6。强烈建议用户开始使用Java1.8(请参阅HIVE-8607)


因此,是的,您将能够使用
apachecommons
中的
String.split
StringUtils
,而不会出现任何问题。

还要注意谷歌番石榴库。事实上,拆分器是如此强大

你确定我可以在蜂巢中使用它吗?我不确定我可以直接在蜂巢中使用它。但也许这可以用来创建一个UDF。。。我对java世界相当陌生:-)@DatamineR-looking配置单元文档,是的,您可以使用我的解决方案。
yourString.split(",", StringUtils.countMatches(yourString, ".") - 1);