Клей AWS: игнорирование пробелов в свойствах JSON - PullRequest
0 голосов
/ 15 января 2019

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

{
    'propertyOne': 'something',
    'property Two': 'something'
}

. У меня есть этот набор данных, который сканировали несколько разных сканеров, чтобы попытаться получить желаемую схему.По какой-то причине в одном из моих сканирований пробелы были удалены, но при попытке воспроизвести процесс я не могу получить удаляемые пробелы, и при запросе в Афине я получаю эту ошибку

HIVE_METASTORE_ERROR: : expected at position x in 'some string' but ' ' found instead.

Позиция xэто позиция пробела между 'property' и 'Two' в записи JSON.

Я хотел бы просто иметь возможность исключить это поле или удалить пробел при сканировании, но я не уверенкак.Я не могу изменить формат JSON.Любая помощь оценивается

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

это на самом деле ошибка с классификатором json aws gule, потому что он не очень подходит для вложенных свойств, в которых есть пробелы. Синтаксическая ошибка в схеме, созданной сканером, а не в json. Он генерирует что-то вроде этого:

struct<propertyOne:string, property Two:string>

Пробел в "свойстве два" должен был быть исключен искателем. На этом этапе генерация DDL для таблицы также не работает. Мы также сталкиваемся с этой проблемой и ищем обходные пути

0 голосов
/ 15 января 2019

Я полагаю, что в этом случае единственным вариантом будет создание собственного пользовательского классификатора JSON , чтобы выбрать только те атрибуты, которые Crawler добавит в каталог данных.

т.е. если вы хотите получить только propertyOne, вы можете использовать, указав выражение JSONPath как $.propertyOne.

Обратите внимание, что ваш JSON должен быть в двойных кавычках, одинарные кавычки также могут вызывать проблемы при разборе данных.

...