Google Cloud Function-错误:找不到模块google-cloud / bigquery

时间:2019-05-02 14:15:43

标签: google-cloud-platform google-bigquery dependencies google-cloud-functions google-cloud-storage

我正在创建一个云功能,以便在新文件放入GCS时将Avro文件从GCS移至BigQuery。我在GCP中使用云功能ui。我有512 MB的内存分配。触发器是Google存储空间。事件类型(如果完成/创建)。源代码是内联编辑器。

下面是我的代码。我可以成功部署,但是部署后收到以下错误,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 个答案:

答案 0 :(得分:3)

您似乎尚未向函数添加任何依赖项:

使用嵌入式编辑器时,对于python单击“ requirements.txt ”,对于javascript单击“ package.json ”,您可以在其中输入所需的软件包您的函数需要运行,然后在函数启动时将其导入。请注意,您还可以根据需要指定版本,例如python:requests==2.19.0

enter image description here