2016-03-30 5 views
1

У меня есть настроенная раковина, расширяющаяся FileBasedSink, к которой я пишу, вызывая PCollection.apply(Write.to(MySink)) в потоке данных (очень просто до XmlSink.java). Однако кажется, что по умолчанию просто вызов Write.to всегда приведет к 3 выводам? Есть ли способ, которым я мог бы определить количество выходных осколков (например, TextTO.Write.withNumShards) только в настройках класса класса? или я должен определить другой настроенный PTransformer как TextIO.Write?Установить количество осколков вывода в Write.to (Sink) в потоке данных

ответ

0

К сожалению, прямо сейчас FileBasedSink не поддерживает указание количества осколков.

На практике количество полученных вами осколков будет зависеть от того, как инфраструктура выбирает для оптимизации частей трубопровода, производящего коллекцию, которую вы пишете, поэтому по существу нет контроля над этим.

Я подал a JIRA issue по вашему запросу, чтобы вы могли подписаться на статус.

+0

thanks jkff, ahh хочу прояснить себе, все ли настроенные раковины не способны поддерживать контроль над количеством осколков вывода? и, по вашему мнению, каков наилучший маршрут в настоящий момент, чтобы обеспечить гибкое количество осколков вывода с моей настроенной раковиной? –

+0

Я думаю, что единственный способ достичь этого в настоящее время - без пользовательского API-интерфейса: подключить ваши данные через ParDo {hash the data modulo numShards} | GBK | ParDo {записать данные этого осколка во временный файл; в finishBundle, атомно переименуйте его в конечное местоположение}. – jkff

+0

Но обратите внимание, что это также не будет работать во многих службах из-за динамического изменения работы –

Смежные вопросы