Лучший способ сохранить объект списка np.array или python как одну запись в BigQuery? - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть модель ML (встраивание текста), которая выводит большой вектор с плавающей точкой длиной 1024, который я хочу сохранить в таблице BigQuery.

Отдельные значения в векторе ничего не значат сами по себе, интерес представляет весь вектор. Следовательно, я хочу хранить эти списки в одном столбце в BigQuery, а не в одном столбце для каждого числа с плавающей запятой. Кроме того, добавление дополнительных 1024 строк в таблицу, изначально состоящую из 4 или 5 строк, кажется плохой идеей.

Есть ли способ сохранить список python или массив np.array в столбце в BigQuery (возможно, сначала преобразовать их в json или что-то в этом духе?)

1 Ответ

0 голосов
/ 27 февраля 2020

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

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

Я провел эксперимент, создав пустую таблицу в моем наборе данных без добавления поля. Затем я использовал код, упомянутый в первой ссылке, после сохранения столбца моих случайных данных в файле CSV.

Если вы столкнулись со следующей ошибкой в ​​отношении разрешений, см. это решение. Вместо этого он использует ключ аутентификации.

google.api_core.exceptions.Forbidden: 403 GET https://bigquery.googleapis.com/bigquery/v2/projects/project-name/jobs/job-id?location=EU: Request had insufficient authentication scopes.

Также, вы можете найти эту ссылку полезной, если вы получите следующую ошибку:

google.api_core.exceptions.BadRequest: 400 Provided Schema does not match Table my-project:my_dataset.random_data. Cannot add fields (field: double_field_0)

Помимо загрузки ваши данные из локального файла, вы можете загрузить свой файл данных в Google Cloud Storage и загрузить данные оттуда . Поддерживаются многие форматы файлов, такие как Avro, Parquet, OR C, CSV и символ новой строки JSON.

Наконец, есть опция для потоковой передачи данных непосредственно в BigQuery. таблица с использованием API, но она не доступна через бесплатный уровень.

...