gpt4 book ai didi

mysql - 如何在 Hadoop Hive 中获取子字符串?

转载 作者:可可西里 更新时间:2023-11-01 16:31:17 26 4
gpt4 key购买 nike

我的问题是如何通过字符串中的指示在 Hive 中获取子字符串。我的列值格式是这样的:

/Country/State/City/Suburb/Street

这里我只需要得到Country。

我喜欢 SPLIT,它返回由“/”分隔的字符串数组。还有 SUBSTR(string a, int begin),它从指定的开始返回一个子字符串。

在 split 中,我需要再次访问一个数组,其中第一个元素是所需的元素,但只想知道是否有任何其他更简单的方法来获取国家/地区。

谢谢

最佳答案

我尝试使用正则表达式来提取Country。使用正则表达式配置单元查询是:

select regexp_extract(column,'\/(.*)/.*/.*/.*/',1) from substring_tbl;

我的建表语句:

create external table substring_tbl(
column string)
LOCATION '/user/root/hive_substring/';

您的输入数据:

/Country/State/City/Suburb/Street

提取所需数据的查询和正则表达式:

select regexp_extract(column,'\/(.*)/.*/.*/.*/',1) from substring_tbl;

输出:

Country

信息:regexp_extract() 返回使用模式提取的字符串。有关 regexp_extract() 的更多详细信息,请访问 hive LanguageManual+UDF

但以防万一,如果您将输入数据更改为不同的形式,那么您也必须更改正则表达式。

更新1

使用 split() 函数进行查询以提取所需数据。

select split(column, '\\/')[1] from substring_tbl;

关于mysql - 如何在 Hadoop Hive 中获取子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30470273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com