如何在Hadoop Hive中获取Substring?

时间:2015-05-26 22:48:10

标签: mysql hadoop hive

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

/Country/State/City/Suburb/Street

这里我只需要获得国家。

我喜欢SPLIT,它返回由'/'分隔的字符串数组。 还有SUBSTR(字符串a,int begin),它返回指示begin的子字符串。

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

感谢

1 个答案:

答案 0 :(得分:2)

我尝试使用正则表达式来提取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()的更多详细信息,请参阅配置单LanguageManual+UDF

但是,如果您将输入数据更改为其他形式,则必须更改正则表达式。

<强> UPDATE1

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

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