如何在hadoop配置单元中获取子字符串?

r8uurelv  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(310)

我的问题是如何通过字符串中的指示来获取配置单元中的子字符串。我的列值格式如下:

/Country/State/City/Suburb/Street

在这里我只需要去乡下。
我喜欢split,它返回一个由“/”分隔的字符串数组。以及substr(字符串a,int begin),它从指定的begin返回一个子字符串。
在split中,我需要再次访问一个数组,其中第一个元素是所需的元素,但我只想知道是否有其他更简单的方法来获取国家。
谢谢

wz3gfoph

wz3gfoph1#

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

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

我的create table语句:

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() 在配置单元语言手册+自定义项上提供
但是,如果您将输入数据更改为不同的形式,那么您也必须更改正则表达式。
更新1
查询使用 split() 函数提取所需数据。

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

相关问题