天道酬勤,学无止境

gcp

如何在 GCP Dataflow 中使用 python 管道代码读取 BigQuery 表(How to read BigQuery table using python pipeline code in GCP Dataflow)

问题 有人可以分享语法以在用 python 编写的 GCP Dataflow 的管道中读/写 bigquery 表吗 回答1 在数据流上运行 首先,使用以下选项构建一个Pipeline ,使其在 GCP DataFlow 上运行: import apache_beam as beam options = {'project': <project>, 'runner': 'DataflowRunner', 'region': <region>, 'setup_file': <setup.py file>} pipeline_options = beam.pipeline.PipelineOptions(flags=[], **options) pipeline = beam.Pipeline(options = pipeline_options) 从 BigQuery 读取 使用您的查询定义BigQuerySource并使用beam.io.Read从 BQ 读取数据: BQ_source = beam.io.BigQuerySource(query = <query>) BQ_data = pipeline | beam.io.Read(BQ_source) 写入 BigQuery 有两种写入 bigquery 的选项: 使用BigQuerySink和beam.io.Write :

2021-10-21 06:25:30    分类:技术分享    python   google-cloud-dataflow   gcp

使用服务帐户的 YouTube Reporting API(YouTube Reporting API using Service Account)

问题 按照 Google 的文档,您应该能够通过使用服务帐户在没有用户身份验证的情况下使用 YouTube 报告 API。 目前我有一个非常简单的示例,它应该给我一个可用工作的列表,但可能是空的。 但是我得到了 403 权限被拒绝。 请求: $client = new \Google_Client(); $client->setAuthConfig('service-account-key.json'); $client->addScope(Google_Service_YouTubeReporting::YT_ANALYTICS_MONETARY_READONLY); $client->addScope(Google_Service_YouTubeReporting::YT_ANALYTICS_READONLY); $youtube_reporting_service = new \Google_Service_YouTubeReporting($client); $jobs = $youtube_reporting_service->jobs->listJobs(); 回应: Google_Service_Exception { "error": { "code": 403, "message": "The caller does not have permission",

2021-10-21 05:14:32    分类:技术分享    php   youtube   youtube-api   gcp   google-client-login

Google Cloud Dataprep 可以监控新文件的 GCS 路径吗?(Can Google Cloud Dataprep monitor a GCS path for new files?)

问题 Google Cloud Dataprep 看起来很棒,我们已经用它来手动导入静态数据集,但是我想多次执行它,以便它可以使用上传到 GCS 路径的新文件。 我可以看到您可以为 Dataprep 设置计划,但我无法在导入设置中的任何地方看到它将如何处理新文件。 这可能吗? 似乎是一个明显的需求 - 希望我错过了一些明显的东西。 回答1 您可以通过在数据集期间单击文件夹左侧的 + 图标来添加 GCS 路径作为数据集(参见屏幕截图)。 当您为使用此数据集的流设置计划作业时,将在每次计划作业运行时选取该目录中的所有文件(包括新文件)。 回答2 对此的进一步更新。 由于我的问题,2018 年 1 月 23 日发布的新版 Dataprep 包括独立于 Dataprep 重新运行数据流作业的能力。 当您执行 Dataprep 作业时,它会生成一个 Dataflow 模板,您可以使用该模板在将来手动触发作业,并允许传入某些参数。 能够触发新文件的步骤(请注意这是 Beta 版,因此 Google 可能会更改确切流程): 创建您的流程并运行您的相关流程/配方。 手动迭代/重复,直到您获得您想要的食谱。 当您愉快地运行时,再次运行该作业(应该是附加数据而不是替换的作业,因为您可能想要附加新内容)。 取消选中“配置文件结果”(新功能)以减少开销可能是一个好主意,因为这将是一项可重复的工作。 完成后

2021-10-20 11:07:21    分类:技术分享    google-cloud-platform   gcp   google-cloud-dataprep

使用 Apache Airflow 将文件从一个 Google Cloud Storage Bucket 复制到另一个(Copy files from one Google Cloud Storage Bucket to other using Apache Airflow)

问题 问题:我想将文件从 Google Cloud Storage Bucket 中的文件夹(例如 Bucket1 中的 Folder1)复制到另一个 Bucket(例如 Bucket2)。 我找不到任何用于 Google Cloud Storage 的 Airflow Operator 来复制文件。 回答1 我刚刚在 2 小时前上传的 contrib 中找到了一个新的运营商:https://github.com/apache/incubator-airflow/blob/master/airflow/contrib/operators/gcs_to_gcs.py 称为GoogleCloudStorageToGoogleCloudStorageOperator应该从存​​储桶中复制一个对象到另一个,如果需要重命名。 回答2 我知道这是一个老问题,但我发现自己也在处理这个任务。 由于我使用的是 Google Cloud-Composer,因此当前版本中不提供GoogleCloudStorageToGoogleCloudStorageOperator 。 我通过使用一个简单的 BashOperator 设法解决了这个问题 from airflow.operators.bash_operator import BashOperator with models.DAG( dag_name

2021-10-20 09:20:19    分类:技术分享    google-cloud-platform   google-cloud-storage   airflow   gcp   apache-airflow

Firestore:授予权限的交易被拒绝(Firestore: Transactions giving permission denied)

问题 我们正在从我们的 Java 应用引擎实例访问Firestore 。 非事务性请求成功,但事务失败并出现错误: firestore: PERMISSION_DENIED: Missing or insufficient permissions 示例交易 final long updatedValue = 15; Firestore db = firebaseManager.getFirestore(); CollectionReference fooCollectionRef = db.collection(SOME_COLLECTION); DocumentReference fooDocumentRef = fooCollectionRef.document(fooId); final ApiFuture<Long> future = db.runTransaction(transaction -> { DocumentSnapshot snapshot = transaction.get(fooDocumentRef).get(); transaction.update(fooDocumentRef, SOME_FIELD, updatedValue); return updatedValue; }); return future.get(); 据我所知

2021-10-19 17:57:59    分类:技术分享    java   firebase   google-cloud-firestore   gcp

使用 gke 更改水平 pod-autoscaler-sync-period(change the horizontal-pod-autoscaler-sync-period with gke)

问题 水平 pod-autoscaler-sync-period 如何使用 gke 更改此设置? 我想从默认的 30 秒更改。 回答1 使用 GKE 时无法添加/删除标志 - 这是由您而不是由您管理的缺点。

2021-10-18 22:59:14    分类:技术分享    kubernetes   google-kubernetes-engine   gcp

TCP 服务器的 GCP Compute Engine 防火墙规则(GCP Compute Engine Firewall Rules for TCP Server)

问题 我创建了一个带有静态外部 IP 地址的 GCP 计算引擎实例。 机器类型:n1-standard-2(2 个 vCPU,7.5 GB 内存)。 操作系统是 Linux/Debian。 我的目的是在机器上创建一个普通的 Node.js TCP 服务器。 代码如下: var net = require('net'); var HOST = '0.0.0.0'; var PORT = 110; net.createServer(function(sock) { console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort); sock.on('data', function(data) { console.log('DATA ' + sock.remoteAddress + ': ' + data); sock.write('You said "' + data + '"'); }); }).listen(PORT, HOST); console.log('Server listening on ' + HOST +':'+ PORT); 客户是: var net = require('net'); var HOST = '104.197.23.132'; var PORT = 110; var

2021-10-16 14:00:47    分类:技术分享    node.js   tcp   google-compute-engine   firewall   gcp

数据存储查询以检索 GCP Nodejs 中的多个值(Datastore Queries to retrive multiple values in GCP Nodejs)

问题 如何在数据存储区 nodejs 中的单个字段中检索多个值。 代码: const query = datastore.createQuery('Task') .filter('user_id', '=', [1,2,3]) .order('priority', { descending: true }); 这是行不通的。 我需要这样的查询 select userName from Table where user_id in (1, 2, 3); 回答1 您可以查询以检索多个值,如下所示: 如果您有多个数据存储区 ID 的数组,如下所示: [1,2,3,4] 可以用 gstore-node 包查询 var userData = await UserModel.get([1,2,3,4]); 希望这会帮助你。 谢谢

2021-10-16 12:21:11    分类:技术分享    node.js   google-app-engine   google-cloud-datastore   gcp

Google Cloud Shell 使用 project=cloud-devshell-dev 而不是我的实际项目,找不到已启用的 API(Google Cloud Shell is using project=cloud-devshell-dev instead of my actual project, can't find enabled APIs)

问题 我创建了一个 GCP 项目来使用视频智能 API。 我在我的项目中启用了 API 并启动了一个 Cloud Shell。 然后我从 github 复制代码并按照 README 说明进行操作。 但是,当我尝试运行faces.py我收到以下错误消息: StatusCode.PERMISSION_DENIED,Google Cloud Video Intelligence API 之前未在项目 cloud-devshell-dev 中使用或禁用。 通过访问 https://console.developers.google.com/apis/api/videointelligence.googleapis.com/overview?project=cloud-devshell-dev 启用它,然后重试 为什么它指向project=cloud-devshell-dev而不是我的videointel项目? 如果我gcloud config list我可以看到正确的项目和服务帐户。 困惑。 回答1 创建一个服务帐户并让您的应用程序将其用于 API 访问,运行: $ gcloud iam service-accounts create my-account $ gcloud iam service-accounts keys create key.json --iam-account=my

2021-10-15 13:00:27    分类:技术分享    python   google-app-engine   gcp   google-cloud-shell

两列上的 BigQuery 重复数据删除作为唯一键(BigQuery DeDuplication on two columns as unique key)

问题 我们虔诚地使用 BigQuery,并且有两个表,它们基本上由不同的进程并行更新。 我的问题是我们没有表的唯一标识符,目标是尽可能将两个表合并为零重复。唯一标识符是两列组合。 我尝试了各种基于 MySQL 的查询,但似乎没有一个在 BigQuery 中有效。 所以我在这里发帖寻求帮助。 :) 步骤 1. 将“干净”表复制到新的合并表中。 步骤 2. 查询“脏”(旧)表并插入任何缺失的条目。 查询尝试 1: SELECT COUNT(c.*) FROM [flash-student-96619:device_data.device_datav3_20160530] AS old WHERE NOT EXISTS ( SELECT 1 FROM [flash-student-96619:device_data_v7_merged.20160530] AS new WHERE new.dsn = old.dsn AND new.timestamp = old.timestamp ) 错误:错误在:6.1 - 10.65。 一次只能执行一个查询。 查询尝试 2: SELECT * FROM [flash-student-96619:device_data.device_datav3_20160530] WHERE (dsn, timestamp) NOT IN ( SELECT dsn

2021-10-15 10:17:07    分类:技术分享    sql   google-bigquery   gcp