hadoop - 使用正则表达式的配置单元查询

标签 hadoop hiveql

您好,我正在寻找一种查询配置单元表 (user_acc_detl) 的方法 其中一列 (ACC_DETAILS) 数据如下所示,

COUNTRY[0]_united staes~DATE[0]_6/10/2014~AMOUNT[0]_200~ID[0]_20140509065052159324~COUNTRY[1]_united kingdom~DATE[1]_6/17/2014~AMOUNT[1]_125~ID[1]_20140516075156389761~COUNTRY[2]_Canada~DATE[2]_6/26/2014~AMOUNT[2]_200~ID[2]_20140515094013444121~COUNTRY[3]_Mexico~DATE[3]_7/3/2014~AMOUNT[3]_1200~ID[3]_20140601000937914898

我可以通过查询hive表

select ACC_DETAILS["COUNTRY[0]"] as COUNTRY, ACC_DETAILS["DATE[0]"] as DATE,  ACC_DETAILS["AMOUNT[0]"] as BILLAMOUNT, ACC_DETAILS["ID[0]"] as PAYMENTID
from user_acc_detl

上面的查询给出了 country[0]、date[0]、amount[0]、id[0] 的数据,这没问题。

问题 - 我只需要使用国家、日期、金额来查询它......而无需指定为国家[0]......

问题 - 是否有正则表达式方法可以相应地修改查询。请帮助我。

最佳答案

实现此目的的一种简单方法是将查询包装在 View 中:

CREATE VIEW user_acc_detl_simple AS
SELECT ACC_DETAILS["COUNTRY[0]"] as COUNTRY
     , ACC_DETAILS["DATE[0]"] as DATE
     , ACC_DETAILS["AMOUNT[0]"] as BILLAMOUNT
     , ACC_DETAILS["ID[0]"] as PAYMENTID
FROM user_acc_detl;

SELECT country, date, billamount, paymentid FROM user_acc_detl_simple;

关于hadoop - 使用正则表达式的配置单元查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24762351/

相关文章:

hadoop - 保存 rdd 时 saveAsTextFile 失败

hadoop - VARCHAR(254) 与 VARCHAR(255)

hadoop - 配置单元错误 : parseexception missing EOF

hive - 将Hive中数字列的NULL数据转换为 '\N'。

hadoop - 将字符串 'ddMMMyyyy' 转换为 Hive 中的日期值

hadoop - cdh3 客户端可与 apache hadoop 服务器 0.20.xx 互操作?

hadoop - 在Hadoop Mapreduce示例上需要一些知识

hadoop - hadoop 中超过 120 个计数器

sql - 在 Hive 中获取查询输出的模式

arrays - 如何访问数组中的最后一个元素?