2017-01-12 69 views
0

給定流式傳輸中的窗口化PCollection,我想根據窗口寫入BQ表中的特定分區。是否可以將窗口化的無界PCollection寫入特定的BQ分區?

當指定tableSpecFunctionBigQueryIO.Write.Bound.to(SerializableFunction<BoundedWindow,String> tableSpecFunction)(docs)看來我只能夠爲表引用字符串指定一個字母數字名稱。

沒有指定表裝飾器,似乎數據被寫入分區ID __UNPARTITIONED__。 AFAICT這最終將解析爲today's partition

對於我的用例,我希望數據能夠在正確的分區中立即訪問。此外,能夠考慮後期數據並將其寫入正確的分區也很好。

所以重申我的問題:

是否可以寫一個窗口無界PCollection到一個特定的BQ分區?

回答

2

您應該可以直接使用分區名稱。 BigQuery API(流式處理)支持通過使用表的分區裝飾器來寫入表的給定分區。例如,要寫入表格T的2016-05-01分區,您需要使用T $ 20160501

<table_name>$<date>語法不適用於您嗎?

+0

哎呦。 我被拋出,因爲在我的測試運行,我看到了這個在日誌中的一個:「表ID必須是字母或數字(加下劃線),並且必須在最長1024個字符此外,表裝飾不能使用」 但是,我似乎沒有正確地清除我的測試數據集,所以我一直試圖在非分區表中嘗試尋址分區。 我只是嘗試了一個乾淨的數據集,它的工作。 PEBKAC – Thang

相關問題