2016-11-22 44 views
0

我們在BigQuery中創建了一個查詢,返回SKU及其之間的相關性。喜歡的東西:如何在壓縮文件中保留Google雲端存儲行順序

sku_0,sku_1,0.023 
sku_0,sku_2,0.482 
sku_0,sku_3,0.328 
sku_1,sku_0,0.023 
sku_1,sku_2,0.848 
sku_1,sku_3,0.736 

結果有數百萬行,我們將其導出到谷歌雲存儲這會導致一些壓縮文件。

下載這些文件,我們有一個Python應用程序,通過它們循環使用相關性進行一些計算。

我們試着利用這樣一個事實,即我們的第一列SKU已經訂購了,而不必在我們的應用程序中應用這種排序。

但是後來我們發現我們從GCS獲得的文件改變了skus出現的順序。

看起來這些文件是由多個進程讀取結果並將其保存在不同的文件中創建的,這打破了我們想要維護的順序。

舉個例子,如果我們創建了2個文件,第一個文件看起來類似的東西:

sku_0,sku_1,0.023 
sku_0,sku_3,0.328 
sku_1,sku_2,0.0848 

第二個文件:

sku_0,sku_2,0.482 
sku_1,sku_0,0.328 
sku_1,sku_3,0.736 

這是什麼一個例子看起來像是讀取結果的兩個進程,每個進程都將其當前行保存在一個特定的文件上,該文件改變了列的順序。

因此,我們尋找一些標誌,我們可以用來強制保存排序,但目前爲止找不到任何標誌。

有什麼方法可以用來強制保存這些GCS文件中的順序?或者有一些解決方法?

在此先感謝,

回答

1

據我所知,沒有標誌維持秩序。

作爲解決方法,您可以重新考慮使用NESTED類型的數據輸出,並確保您想組合在一起的內容在NESTED行中轉換,並且可以導出爲JSON。

+0

我們剛剛遷移到標準的SQL和這工作。非常感謝! –

0

是否有一些解決方法?

作爲一個選項 - 您可以將您的處理邏輯從Python移動到BigQuery,從而消除將BigQuery中的數據移出到GCS。

相關問題