Оракул поле даты / времени искры не читаются с ошибкой точности - PullRequest
0 голосов
/ 09 июля 2019

Я давно гоняюсь за этой проблемой, и у меня нет вариантов, которые я знаю. Я загружаю паркетный файл, в котором есть такие строки:

RFS,FOI,1209591006000,64.0000,1209591007000,Y,1209591007000,04/30/2008 17:30:07,1209591007000,UPDATER

Бесполезно то, что spark выдаёт ошибку, сообщающую мне, что точность для DecimalType больше 38 (это предел). Вот соответствующая трассировка стека:

19/07/09 20:24:02 WARN TaskSetManager: Lost task 0.0 in stage 4.0 (TID 203, ip-10-230-246-236.ec2.internal, executor 1): org.apache.spark.sql.AnalysisException: DecimalType can only support precision up to 38;
at org.apache.spark.sql.types.DecimalType.<init>(DecimalType.scala:52)

Вопросы: 1) Я не понимаю, какой столбец может вызывать искру, ни один из них не кажется даже отдаленно близким к пределам точности 2) Как я могу получить искру, чтобы сказать мне более конкретно, для какой колонки она не подходит (или, еще лучше, для какой строки?)? 3) Я не могу напечатать схему в spark, потому что я даже не могу прочитать в файле (хранящемся в S3) из-за этого исключения, поэтому я не уверен, как проверить правильность схемы. 4) Это неверная схема в файле паркета? Или это проблема с данными?

Информация: - Spark работает как склеенная работа (без сервера), но я считаю, что на последней версии. - файл паркета генерируется HVR и имеет версию v3 паркета без сжатия.

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

1 Ответ

0 голосов
/ 11 июля 2019

Оказалось, что проблема с инструментом приема, который я использовал для записи файлов в S3.Полями, которые вызывали проблемы, были любые столбцы с типом данных «число» в источнике оракула.С этим конкретным типом данных и специальным инструментом приема, который мы использовали для посадки файлов паркета в S3, он имел правильные данные, но каким-то образом встроенная схема паркета показала поле как десятичное число (1000,4).Даже при том, что ни одно из значений в этом столбце не имело точности больше 4. Вендер закончил выдачу исправления, и тип данных прошел с правильной точностью, и искра перестала жаловаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...