Scalding: анализировать вложенный файл JSON с разными атрибутами

У меня есть вложенный файл JSON, где каждая запись может содержать другой набор полей во вложенной части. Поле выглядит так, хотя на самом деле это версия avro:

{"type":"record",
 "name":"features",
 "namespace":"OurCode",
 "fields":[{"name":"key","type":"long"},
       {"name":"features",
        "type":{"type":"map","values":"double"}}]
}

Второе поле, «функции», является вложенным полем, которое содержит несколько полей внутри себя, и каждая запись содержит потенциально другой набор вложенных полей.

Итак, если у меня есть 2 записи, которые выглядят так:

key1: 123   features:{var1=4, var2 = 3, var4 = 10}
key2: 456   features:{var3 = 15, var4 = 9, var5 = 22}

Мне нужно превратить приведенные выше данные во что-то вроде:

Key     Var1   Var2   Var3   Var4   Var5
123       1      3     0      10     0
456       0      0     15      9     22

Я могу вручную извлечь поля при чтении файла, используя что-то вроде:

JsonLine(args("input"), ('acct_id, Symbol("features.Var1"). Symbol("features.Var2), ...)
  .read

Мне нужен код, который является немного более общим и может выяснить, что представляют собой все подполя, без необходимости явно объявлять каждое из них.

Спасибо за вашу помощь.


person J Calbreath    schedule 23.02.2015    source источник


Ответы (1)


JsonLine не имеет той функциональности, которую вы ищете, я прочитал там исходный код и примеры и не смог найти что-то подобное.

На самом деле, я также изучал то же самое в течение последних нескольких дней и не смог найти хороших парсеров json. JsonLine утомительно, но отлично справляется со своей задачей.

person Sanchit Grover    schedule 24.02.2015