首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YAML文件到Google BigQuery。我在Google Cloud平台上的架构应该是什么?

YAML文件到Google BigQuery。我在Google Cloud平台上的架构应该是什么?
EN

Stack Overflow用户
提问于 2018-12-13 02:03:36
回答 2查看 812关注 0票数 0

这个问题涉及到在Google Cloud Platform上应该为我的特定用例建立一个合适的架构。

我有一堆.yaml文件,我想使用Google Cloud Platform的产品在这些文件上运行SQL查询。这些文件的总大小不会超过30MB,每个文件的平均大小约为50KB。新文件也不会频繁添加-大约一年2-3次。

我在想,我可以设计一个架构,将所有这些文件保存在云存储上,我运行一个数据流管道/云函数来将这些.yaml文件转换为.json,然后将它们导入到BigQuery中运行SQL查询。

什么似乎是一个合适的方法?使用Dataflow或Cloud Functions进行预处理还是完全使用其他功能?

我对Python也很满意,所以我正在寻找一种结合了这一点的解决方案。例如,Dataflow有一个Python SDK。

EN

回答 2

Stack Overflow用户

发布于 2018-12-13 09:20:07

BigQuery可能不是解决这个问题的合适工具。此外,使用VM是一项工作,而且成本也会很高。您还需要维护该VM。

这里有一种使用云函数的方法。我将假设您没有使用SQL的,可以简单地将文件内容加载到内存中,并简单地执行基本的字符串搜索。代码有点粗糙,是从SO上的其他答案拼凑而成的,但它应该足以让你继续下去。

  • 创建一个云函数(示例使用Node,但也可以是Python )来侦听您的存储桶并将内存设置为合适的大小,例如256MB。这是因为我们将把内容读入内存。此外,将最大执行时间从默认的60秒增加。

  • Deploy it。

  • 将YAML文件上传到GCS存储桶,它将触发云函数执行,然后将文件内容读取到内存中。

  • 检查执行的函数的日志,您可以看到它将YAML文件的内容读取到内存中。

代码如下:

index.js

代码语言:javascript
复制
const storage = require('@google-cloud/storage')();

exports.searchYAML = function searchYAML(event) {
    return new Promise(function(resolve, reject) {
        const file = event.data;
        (storage
            .bucket(file.bucket)
            .file(file.name)
            .download()
            .then(function(data) {
                if (data)
                    return data.toString('utf-8');
            })
            .then(function(data) {
                if (data) {
                    console.log("New file " + file.name);
                    console.log(data);
                    //Do some searching/logic with the file contents here
                    resolve(data);
                }
            })
            .catch(function(e) {
                reject(e);
            })
        );
    });
};

package.js

代码语言:javascript
复制
{
  "main": "index.js",
  "dependencies": {
    "@google-cloud/storage": "^1.2.1"
  }
}
票数 2
EN

Stack Overflow用户

发布于 2018-12-13 02:18:58

你提出的想法没有一个是合适的。

启动Cloud Dataflow需要比实际处理时间更长的时间(启动10分钟,处理1秒)。你正试图用一辆Mac卡车运送一根牙签。

30 MB的YAML文件非常小。在您编写Dataflow python脚本时,您已经将YAML文件转换为Json。

YAML转换为Json并不是BigQuery的一个很好的用途。BigQuery是基于列的结构化数据。转换和扁平化Json可能会有问题。这是一个简单的内存中NoSQL查询引擎的任务。

这是一个非常小的任务,很容易适合运行Python脚本的最小的Compute Engine VM实例。App Engine将是另一个很好的选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53748867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档