2016-08-04 6 views
-1

У меня массивный набор данных, хранящийся в Azure BLOB в формате JSON. Некоторые приложения постоянно добавляют к нему новые данные. BLOB организованы в перегородках типаСпециальные запросы к массивному набору данных JSON

/dataset={name}/date={YYYY-MM-DD}/one_or_more_json_files 

Данные не соответствуют какой-либо конкретной схеме. Имена полей JSON не совпадают. Некоторые строки JSON могут быть разбиты.

Может ли кто-нибудь посоветовать хороший способ запросить эти данные без предварительного указания схемы. Я хотел бы сделать что-то вроде

select * from my_huge_json_dataset where dataset='mydataset' and date>'2015-04-01' 

без определения явной схемы для таблицы

Моего первым рассмотрение был HIVE, но оказывается, что SerDe нужна схема, чтобы определить для создания таблицы. json_tuple может быть ответом, но он чувствителен к регистру и падает, если встречается некорректная строка json.

Я также рассматриваю сверло Apache и свиньи, но у них нет опыта работы с ними, и мне хотелось бы получить некоторые рекомендации.

ответ

0

Вы можете использовать Apache Drill, вам нужно только настроить новое хранилище, указывая на папку набора данных:

{ 
    "type": "file", 
    "enabled": true, 
    "connection": "file:///", 
    "config": null, 
    "workspaces": { 
    "root": { 
     "location": "/", 
     "writable": false, 
     "defaultInputFormat": null 
    }, 
    "tmp": { 
     "location": "/tmp", 
     "writable": true, 
     "defaultInputFormat": null 
    } 
    }, 
"formats": { 
"json": { 
     "type": "json", 
     "extensions": [ 
     "json" 
     ] 
    } 
} 

Итак, если вы определили, что для хранения Plugin как «ДФС», например, можно запрашивать из корневой каталог без определения какой-либо схемы с использованием ANSI SQL, так же, как:

SELECT * FROM dfs.dataset.date.`file.json`; 

или даже фильтровать по имени папки в одном запросе с помощью dir0.

Я призываю вас посетить сайт документации Apache Drill documentation в вашем случае специально Querying JSON files

+0

Поддерживает ли разделение или запросы только один файл? – irriss

+0

@ Ruslan да, вы можете запросить один файл или каталог (при условии, что все файлы имеют очень похожую структуру json), а также можно оптимизировать запросы путем разделения данных [см. Этот пример] (https://drill.apache.org/ Docs/как к перегородке-данные /) –