2017-10-16 57 views
1

我目前正在將一個BigQuery表提取到Google雲端存儲中的分片.csv中 - 有沒有什麼方法可以對提取行進行隨機/隨機化? GCS .csv將作爲GCMLE模型的訓練數據使用,當前導出是以非隨機順序排列的,因爲它們被類似的「標籤」拼湊在一起。可以將BigQuery表提取的行隨機化

這在培訓GCMLE模型時會引發問題,因爲您必須在每個批次中交付模型的所有標籤的隨機示例。儘管GCMLE/TF能夠隨機化單個.csv中行的順序,但是(據我所知)沒有任何方法可以隨機化多個.csv中選定的行。所以,我正在尋找一種方法來確保輸出到.csv的行確實是隨機的。

+0

你沒有控制權如何從BigQuery中導出數據。我首先會問你爲什麼需要這樣做?你試圖解決什麼問題.. –

+0

可能重複的[Google雲DataFlow Randomize WritetoBigQuery](https://stackoverflow.com/questions/46778848/google-cloud-dataflow-randomize-writetobigquery) –

+0

我問了兩個這些問題,但我相信他們是不同的問題。第一個問題涉及更廣泛地涉及Dataflow流水線,而這個問題詢問BigQuery中的功能(這可能對另一個問題有用),而不是在評論中丟失問題(和答案)否則有關於BigQuery的類似問題 – reese0106

回答

1

BigQuery表提取的行可以隨機化嗎?

編號Extract Job API(因此任何建立在它上面的客戶端)都沒有任何東西可以讓你這樣做。

我正在尋找一種方法來確保輸出到.csv的行確實是隨機的。

您應該首先創建對應於您的csv文件的表格,然後將它們一個接一個地提取到單獨的csv中。在這種情況下,您可以控制如何處理什麼csv

如果您擔心的是處理成本(您需要掃描表的次數與csv文件一樣多) - 您可以檢查Migrating from non-partitioned to Partitioned tables中的分區方法。這還涉及到成本,而且大大降低一個

最後,零成本的選擇是使用Tabledata.list API與尋呼而分配整個CSV文件的響應 - 你可以在你選擇的client容易做到這一點