小编and*_*622的帖子

来自 Python 客户端库的 GCS Rsync?

我正在尝试用 Python 重写一些 bash 脚本,特别是我试图重写一行执行gsutil -m rsync -r /local/path/to/data gs:/path/to/data. 但是,我无法rsync此处的 Python 客户端库文档中找到任何对功能的引用。

如果有人解决了这个问题,请告诉我。如果此功能当前未在客户端库中实现,有谁知道为什么?

python google-cloud-storage google-cloud-platform

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

动态分叉梁(数据流)管道基于TaggedOutputs的数量

我目前正在尝试根据数据中包含的特定密钥将在Google Dataflow上运行的Beam管道分成多个目标.当使用TaggedOutput标记对"fork"的每个端点进行硬编码时,我能够正常工作.但是,在将来,我不会总是知道底层数据中存在哪些键,因此我希望使用类似于下面的for循环动态创建流程中的后续步骤:

p = beam.Pipeline(options=pipeline_options)

pipe = p | 'ReadFromGCS' >> ReadFromText(args['input']) \
         | 'TagAllLines' >> beam.ParDo(produce_tagged_output_keys).with_outputs()

for client in pipe:
  client = pipe.client | client+'MapLinesToDicts' >> beam.Map(lambda line: dict(record=line)) \
                         | client+'WriteToBQTable' >> WriteToBigQuery(client+'_test', dataset=bq_dataset, project=project_id, schema='record:string')
Run Code Online (Sandbox Code Playgroud)

我的理解是结果 .with_outputs()应该是可迭代的,不是吗?当我运行上面的命令时,它会pipe毫无问题地执行,但完全忽略for循环.有没有办法动态地做到这一点,我错过了?

google-cloud-platform google-cloud-dataflow apache-beam

4
推荐指数
1
解决办法
858
查看次数

忽略附加的未知值

将 JSON blob 附加到 BigQuery 中的现有表时,我遇到了一些问题;具体来说,所附加的 JSON 中存在新的但不是必需的叶元素,导致我无法附加数据。

使用 UI,我可以使用 Google Cloud Storage 中的 JSON 文件创建一个表,在描述架构后,我可以选择“忽略未知值”。从定义来看:

启用以接受包含与架构不匹配的值的行。未知值将被忽略。

这对于初始表创建和从 GCS 导入非常有效,并且是我想继续利用的附加功能。但是,当我尝试使用 bq 命令行工具将数据附加到表中时,我收到错误,导致 JSON blob 的各个叶元素不属于架构。

有人遇到过类似的问题吗?有快速解决办法吗?我知道我可以预处理 JSON 本身以删除不需要的元素,但我觉得“忽略未知值”应该是一个命令行标志。

除非有人有具体原因导致未实现此功能,否则我可能会提出功能请求。

谢谢!

google-bigquery

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