HIVEQL - 如何为JSON值编写条件

时间:2013-09-13 13:40:29

标签: json hiveql

我在从dynamoDB导出的表中有以下数据:

...
SUID{
    "s": {\"profileElementType\":\"1\",\"version\":0,\"seq\":1,\"sUid\":\"15141\"}"
}
OPTED{
    "s": "{\"profileElementType\":\"2\",\"version\":0,\"seq\":4,\"value\":\"1\"}"
...

我按如下方式创建了hive表:

CREATE EXTERNAL TABLE IF NOT EXISTS DATA_FULL (item map<string, string> )
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
TBLPROPERTIES ("dynamodb.table.name" = "ORIGINAL_DATA");  

我想了解如何在HiveQL中编写WHERE子句来处理这些数据。

我尝试了以下HiveQL:

SELECT * FROM DATA_FULL where item['SUID'] LIKE '%15141%';

没有结果。

SELECT item['SUID'],item['OPTED'] FROM DATA_FULL where   
(item['OPTED'] LIKE '%\"value\":\"0\"%' or item['OPTED'] LIKE   
'%\"value\":\"2\"%');

没有结果(上面的HiveQL尝试  从此表中提取OPTED的值,如“Value:0”或OPTED,如“Value:2”

1 个答案:

答案 0 :(得分:0)

更改了WHERE子句并在条件中添加了一个\。

 SELECT item['SUID'],item['OPTED'] FROM DATA_FULL where   
 (item['OPTED'] LIKE '%\\"value\\":\\"0\\"%');