2 回答

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個贊
可能有助于調(diào)試的一件事是查看 Stackdriver 日志。
如果您在 Google控制臺中打開 Dataflow 作業(yè)并單擊LOGS
圖形面板右上角的 ,則應(yīng)該會打開底部的日志面板。LOGS 面板的右上角有一個指向 Stackdriver 的鏈接。這將為您提供有關(guān)您的工人/洗牌/等的大量日志信息。對于這個特定的工作。
其中有很多內(nèi)容,并且很難過濾掉相關(guān)的內(nèi)容,但希望您能夠找到比A work item was attempted 4 times without success
. 例如,每個工作人員偶爾會記錄它正在使用的內(nèi)存量,這可以與每個工作人員擁有的內(nèi)存量(基于機(jī)器類型)進(jìn)行比較,以查看它們是否確實(shí)內(nèi)存不足,或者您的錯誤是否正在發(fā)生別處。
祝你好運(yùn)!

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個贊
據(jù)我所知,在 Cloud Dataflow 和 Apache Beam 的 Python SDK 中沒有可用的選項來診斷 OOM(Java SDK 可以)。我建議您在Cloud Dataflow 問題跟蹤器中打開功能請求,以獲取有關(guān)此類問題的更多詳細(xì)信息。
除了檢查 Dataflow 作業(yè)日志文件之外,我建議您使用Stackdriver Monitoring 工具監(jiān)控您的管道,該工具提供每個作業(yè)的資源使用情況(作為總內(nèi)存使用時間)。
關(guān)于 Python SDK 中的 Partition 函數(shù)使用,以下代碼(基于 Apache Beam文檔中提供的示例)將數(shù)據(jù)拆分為 3 個 BigQuery 加載作業(yè):
def partition_fn(input_data, num_partitions):
return int(get_percentile(lines) * num_partitions / 100)
partition = input_data | beam.Partition(partition_fn, 3)
for x in range(3):
partition[x] | 'WritePartition %s' % x >> beam.io.WriteToBigQuery(
table_spec,
schema=table_schema,
write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND,
create_disposition=beam.io.BigQueryDisposition.CREATE_IF_NEEDED)
添加回答
舉報