Как использовать JsonLoader в pig для загрузки данных
Предположим, у меня есть файл JSON в этой форме:
{"kind": "youtubeAnalytics#resultTable", "rows": [["2015-03-23", "a1jkKOrbYuQ", 141],["2015-03-24", "a1jkKOrbYuQ", 14]]}
{"kind": "youtubeAnalytics#resultTable", "rows": [["2014-03-23", "a1jkKzubYuQ", 141],["2014-03-24", "a1jkKzubYuQ", 14]]}
Follwing - скрипт, который я написал, который просто позволяет загружать и выгружать файл:
A = LOAD '/user/hdfs/youtube_data_views_' using JsonLoader('kind:chararray, rows:{field:(i1:chararray,i2:chararray,i3:int)}');
DUMP A;
И вот результат, который я получаю:
(youtubeAnalytics#resultTable,)
На самом деле, я попробовал десятки комбинаций с кортежами и сумками, чтобы убедиться, что A был загружен правильно, а не частично. К сожалению, никто не работал. Любая помощь будет оценена
1 ответ
Оказывается, все, что мне нужно было сделать, это использовать банку с птицей-слоном... Вот список банок, которые нужно зарегистрировать:
REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/elephant-bird-core-4.4.jar';
REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/elephant-bird-hadoop-compat-4.4.jar';
REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/elephant-bird-pig-4.4.jar';
REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/google-collections-1.0-rc1.jar';
REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/json-simple-1.1.jar';
Последний совет: избегайте использования встроенной функции JsonLoader. Вы будете тратить свое время, чтобы получить правильную схему...