我正在理解我们应该如何使用Google DataFlow(基于Apache Beam)Python SDK来测试我们的管道。
https://beam.apache.org/documentation/pipelines/test-your-pipeline/ https://cloud.google.com/dataflow/pipelines/creating-a-pipeline-beam
以上链接仅适用于Java。我很困惑谷歌为什么会指向Java Apache测试。
我希望能够在两个p集合上查看CoGroupByKey连接的结果。我来自Python背景,我几乎没有使用Beam / Dataflow的经验。
真的可以使用任何帮助。我知道这在一定程度上是开放式的。基本上我需要能够在我的管道中查看结果,这使我无法看到我的CoGroupByKey Join的结果。
以下代码
#dwsku, product are PCollections coming from BigQuery. Nested Values as
#well in Product, but not dwsku
d1 = {'dwsku': dwsku, 'product': product}
results = d1 | beam.CoGroupByKey()
print results
印刷什么:
PCollection[CoGroupByKey/Map(_merge_tagged_vals_under_key).None]
答案 0 :(得分:3)
如果要在计算机上进行本地测试,则应首先使用DirectRunner
然后通过打印日志或停止在调试器中执行来调试它。
要在本地查看整个PCollection,您可以执行以下操作:
d1 = {'dwsku': dwsku, 'product': product}
results = d1 | beam.CoGroupByKey()
def my_debug_function(pcollection_as_list):
# add a breakpoint in this function or just print
print pcollection_as_list
debug = (results | beam.combiners.ToList() | beam.Map(my_debug_function))
这里有几点需要记住:
ToList()
转换可能会分配大量内存DirectRunner
时,您应该使用管道的.wait_until_finish()
方法,这样您的脚本就不会在管道完成执行之前结束LIMIT
放入查询中