Трудности создания таблицы CSV в Google BigQuery - PullRequest
0 голосов
/ 20 февраля 2019

У меня возникают трудности с созданием таблицы в Google BigQuery с использованием данных CSV, которые мы загружаем из другой системы.

Цель состоит в том, чтобы в Google Cloud Platform была корзина, в которую мы будем загружать 1 CSVфайл в месяц.Эти CSV-файлы содержат от 3000 до 10000 строк данных в зависимости от месяца.

Ошибка, которую я получаю из истории заданий в API Big Query: Ошибка при чтении данных, сообщение об ошибке: Обнаружена таблица CSVСлишком много ошибок, сдаваться.Ряды: 2949;Ошибки: 1. Пожалуйста, просмотрите коллекцию ошибок [] для более подробной информации.

Когда я загружаю файлы CSV, я выбираю следующее: - формат файла: csv - тип таблицы: собственная таблица - автоопределение: пробное автоматическое и ручное - разбиение: без разбиения - предпочтение записи: WRITE_EMPTY (не может изменить это) - количество допустимых ошибок: 0 - игнорировать неизвестные значения: не проверено - разделитель полей: запятая - пропущены строки заголовка: 1 (также пробовал 0 и удаление строк заголовка вручную из файлов csv).

Любая помощь будет принята с благодарностью

Спасибо,

Ответы [ 4 ]

0 голосов
/ 14 мая 2019

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

Может быть что-то вроде:

cat myfile.csv | awk -F, '{ a[NF]++ } END { for (n in a) print n, "rows have",a[n],"columns" }'

Или вы можете привязать его к условию (скажем, если ваше число столбцов должно быть 5):

ncols=$(cat myfile.csv | awk -F, 'x=0;{ a[NF]++ } END { for (n in a){print a[n]; x++; if (x==1){break}}}'); if [ $ncols==5 ]; then python myexportscript.py; else echo "number of columns invalid: ", $ncols; fi;
0 голосов
/ 22 февраля 2019

Как упомянуто Scicrazed , эта проблема, по-видимому, возникает из-за того, что некоторые строки файла имеют неправильный формат, и в этом случае требуется проверить данные содержимого, чтобы выяснить конкретную ошибку, которая являетсяРуководство по решению этой проблемы.

Я рекомендую вам проверить errors[] collection, который может содержать дополнительную информацию об аспектах, которые могут возникнуть при сбое процесса.Это можно сделать с помощью метода Jobs: get , который возвращает подробную информацию о вашем задании BigQuery, или обратитесь к полю additionalErrors в журнале JobStatus Stackdriver , который содержит ту же самую полную ошибкуданные, которые сообщает служба.

0 голосов
/ 13 мая 2019

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

Нужно понять, что это за ошибка и как-то исправить.Самый простой способ сделать это, запустив эту команду на терминале:

bq --format=prettyjson show -j <JobID>

, и вы сможете увидеть дополнительные журналы ошибок, чтобы помочь вам понять проблему.

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

Надеюсь, это поможет

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

Невозможно указать на ошибку, не увидев пример файла CSV, но очень вероятно, что ваш файл неправильно отформатирован.В результате, одна опечатка вводит в заблуждение BQ, считая, что их тысячи.Допустим, у вас есть следующий CSV-файл:

Sally Whittaker,2018,McCarren House,312,3.75
Belinda Jameson 2017,Cushing House,148,3.52 //Missing a comma after the name
Jeff Smith,2018,Prescott House,17-D,3.20
Sandy Allen,2019,Oliver House,108,3.48

Со следующей схемой:

Name(String)    Class(Int64)    Dorm(String)    Room(String)    GPA(Float64)

Поскольку в схеме отсутствует запятая, все смещается на один столбец.Если у вас большой файл, это приводит к тысячам ошибок при попытке вставить строки в Ints / Floats.

Я советую вам запустить файл csv через csv validator, прежде чем загружать его в BQ.Это может найти что-то, что сломает это.Возможно даже, что одно из ваших полей имеет запятую внутри значения, которое нарушает все.

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

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