小编che*_*thi的帖子

谷歌数据流作业成本优化

我已经为 100 GB 大小的 522 个 gzip 文件运行了以下代码,解压缩后,它将是大约 320 GB 数据和 protobuf 格式的数据,并将输出写入 GCS。我已经使用 n1 标准机器和区域进行输入,输出都得到了照顾,工作花费了我大约 17 美元,这是半小时的数据,所以我真的很需要在这里做一些成本优化。

我从下面的查询中得到的成本

SELECT l.value AS JobID,  ROUND(SUM(cost),3) AS JobCost 
FROM `PROJECT.gcp_billing_data.gcp_billing_export_v1_{}` bill, 
UNNEST(bill.labels) l
WHERE service.description = 'Cloud Dataflow' and l.key = 'goog-dataflow-job-id' and 
extract(date from _PARTITIONTIME) > "2020-12-31"
GROUP BY 1
Run Code Online (Sandbox Code Playgroud)

完整代码

  import time
  import sys
  import argparse
  import apache_beam as beam
  from apache_beam.options.pipeline_options import PipelineOptions
  from apache_beam.options.pipeline_options import SetupOptions
  import csv
  import base64
  from google.protobuf import timestamp_pb2
  from google.protobuf.json_format import MessageToDict …
Run Code Online (Sandbox Code Playgroud)

python protocol-buffers avro google-cloud-dataflow apache-beam

22
推荐指数
1
解决办法
574
查看次数

Python 逐行从 url 下载大型 csv 文件,只有 10 个条目

我有一个很大的客户端 csv 文件,并通过 url 共享下载,我想逐行按字节下载它,我只想限制 10 个条目。

我有以下代码将下载文件,但我想在这里只下载文件中的前 10 个条目,我不想要完整的文件。

#!/usr/bin/env python
import requests
from contextlib import closing
import csv

url = "https://example.com.au/catalog/food-catalog.csv"

with closing(requests.get(url, stream=True)) as r:
    f = (line.decode('utf-8') for line in r.iter_lines())
    reader = csv.reader(f, delimiter=',', quotechar='"')
    for row in reader:
        print(row)
Run Code Online (Sandbox Code Playgroud)

我不太了解contextlib,它将如何with在 Python 中使用。

任何人都可以在这里帮助我,这真的很有帮助,并提前致谢。

python csv

5
推荐指数
1
解决办法
1428
查看次数

将用户按照 80:20 的比例随机分为两组

我有一个名为 users 的 id 列表,想将它们按 80:20 的百分比随机分为两组。

例如,我有一个包含 100 个用户 ID 的列表,并随机将 80 个用户放入 group1,将剩余 20 个用户放入 group2

 def getLevelForIncrementality(Object[] args) {
   try {
     if (args.length >= 1 && args[0]!="") {
        String seed = args[0] + "Testing";
        int rnd = Math.abs(seed.hashCode() % 100);
        return (rnd >= 80 ? 2 : 1);
     }
  } catch (Exception e) { }
 return 3;
}
Run Code Online (Sandbox Code Playgroud)

我从上面的常规代码中尝试过,它给出的比例为 82:18。

有人可以给我一些见解、建议或算法来解决数百万用户 ID 的上述问题吗?

python

2
推荐指数
1
解决办法
2903
查看次数