2013-09-13 3 views
1

я следующие данные в одном из таблицы я экспортируемые из dynamoDB:HIVEQL - как написать условие для JSON значений

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

Я создал улей таблицы следующим образом:

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"); 

I хотел понять, как написать предложение WHERE в HiveQL для обработки таких данных.

Я попробовал следующее 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\"%'); 

результатов нет (The HiveQL выше пытается значений экстракта из этой таблицы, выбрали как «Value: 0» или недействительны, как «Value: 2»

ответ

0

Изменен ИНЕК и добавил еще один \ к условиям.

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