2016-03-30 10 views
1

Veri akışında PCollection.apply(Write.to(MySink)) numaralı telefonu arayarak yazdığım (XmlSink.java için çok daha basit) özelleştirilmiş bir lavabo kullanıyorum. Ancak, varsayılan olarak Write.to numaralı telefonun aranması her zaman 3 çıkış parçasıyla sonuçlanacak mı? Sadece özelleştirilmiş sink sınıf tanımında çıkış shard sayısını (TextTO.Write.withNumShards gibi) tanımlayabilmemin bir yolu var mı? ya da TextIO.Write gibi başka bir özelleştirilmiş PTransformer tanımlamalı mıyım?Veri akışında Write.to (Sink) cinsinden çıkış no değerini ayarlayın

cevap

0

Maalesef, şu anda FileBasedSink parçaların sayısını belirtmeyi desteklemiyor. Pratikte, aldığınız parçaların sayısı, çerçevenin yazdığınız koleksiyonu üreten boru hattının parçalarını nasıl optimize ettiğini seçeceğine bağlı olacaktır, bu nedenle, bunun üzerinde esas olarak hiçbir kontrol yoktur.

İsteğinize abone olabilmeniz için isteğiniz için a JIRA issue başvurusunda bulundum.

+0

Teşekkürler jkff, ahh kendime açık yapmak istiyorum, tüm özelleştirilmiş lavabo çıkış shard sayısı üzerinde kontrolü desteklemek mümkün değil mi? ve böylece fikrinize göre, özelleştirilmiş lavabonun esnek çıkış çıkışını mümkün kılmak için mevcut noktaya gitmek için en iyi yol hangisidir? –

+0

Şu anda bunu başarmanın tek yolu, özel havuz API'sı değil: Verilerinizi bir ParDo aracılığıyla aktarın {veri modulo numShards hashtag} | GBK | ParDo {bu parçanın verilerini geçici bir dosyaya yazınız; finishBundle'da, atomik olarak son konumuna dönüştürün}. – jkff

+0

Ancak, bu durum, dinamik çalışma yeniden dengelenmesi nedeniyle birçok hizmette de çalışmayacağını unutmayın. –

İlgili konular