Функция Google Cloud - ошибка: не удается найти модуль google-cloud / bigquery - PullRequest
0 голосов
/ 02 мая 2019

Я работаю над созданием облачной функции, которая перемещает авро файлы из GCS в BigQuery, каждый раз, когда новый файл попадает в GCS. Я использую функцию облачного интерфейса в GCP. У меня выделено 512 МБ памяти. Триггер это Google Storage. Тип события, если Завершить / Создать. Исходный код встроенного редактора.

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

Кроме того, я пытаюсь переместить avro-файлы из папки внутри корзины, поэтому я не извлекаю напрямую из верхней родительской корзины. В этом смысл кода ниже, так как я пытаюсь попасть в папку, которая называется "example_spend /"

ошибка: не удается найти модуль google-cloud / bigquery

'use strict';

exports.createExampleTableFromFile = function(event, callback) {
const file = event.data;
if (file.resourceState === 'exists' && file.name && 
    file.name.indexOf('example_spend/') !== -1) {

console.log('Processing file: ' + event.data.name);


const BigQuery = require('@google-cloud/bigquery');
const Storage = require('@google-cloud/storage');
const assert = require('assert');


 const filename = event.data.name;
 const bucketName = event.data.bucket;


const projectId = "gcp-pilot-192921";
const datasetId = "example_etl";
const tableId = filename.slice(0,filename.indexOf(".")).toLowerCase();  


const bigquery = new BigQuery({
  projectId: projectId,
});

const storage = Storage({
  projectId: projectId
});  


const metadata = {
  sourceFormat: 'AVRO', 
  autodetect: true, 
  writeDisposition: 'WRITE_TRUNCATE'
};

bigquery
  .dataset(datasetId)
  .table(tableId)
  .load(storage.bucket(bucketName).file(filename), metadata)
  .then(results => {
    const job = results[0];


    assert.equal(job.status.state, 'DONE');
    console.log(`Job ${job.id} to load table ${tableId} completed.`);  


    const errors = job.status.errors;
    if (errors && errors.length > 0) {
      throw errors;
    }

  })
  .catch(err => {
    console.error('Error during load job:', err);
  });

callback();
}};

1 Ответ

3 голосов
/ 02 мая 2019

Похоже, вы не добавили никаких зависимостей в свою функцию:

При использовании встроенного редактора, нажмите « needs.txt » для python или « package.json » для javascript, где вы можете ввести необходимые пакеты, которые ваша функция необходимо запустить, они будут импортированы, когда ваша функция раскручивается. Обратите внимание, что при необходимости вы также можете указать версии, например, в python: requests==2.19.0.

enter image description here

...