【问题标题】:Hive: split string using regexHive:使用正则表达式拆分字符串
【发布时间】:2017-12-19 01:52:55
【问题描述】:

我有一串以:: 分隔的单词。如何使用Hive UDF regexp_extract() 从字符串中提取单词?

【问题讨论】:

  • invoketheshells 回答有什么问题吗?

标签: regex hadoop hive


【解决方案1】:
regexp_extract('2foa1fa::12hjk','^(\\w.*)\\:{2}(\\w.*)$',1) as word1

输出:2foa1fa

regexp_extract('2foa1fa::12hjk','^(\\w.*)\\:{2}(\\w.*)$',2) as word2

输出:12hjk

  • ^ 锚定到字符串的开头
  • \\w 查找单词字符,.* 表示任意次数
  • \\:{2} 连续查找两个 :(这是您的 :: 分隔符)
  • $ 将字符串锚定到字符串的末尾
  • 在 regexp_extract 中指定第三个参数提取索引(模式)

现在只需将您的列名放在字符串文字的位置,您就可以开始了。

您还可以使用拆分函数创建一个数组,然后也可以通过数组位置进行查询。看起来像这样:

select my_array[2] from 
    (select split('2foa1fa::12hjk','\\::') as my_array from my_table) b;

输出:12hjk

【讨论】:

    猜你喜欢
    • 2017-02-23
    相关资源
    最近更新 更多