2017-10-09 14 views
1

私は、なぜデータフローがApache Sparkのような 'SortByKey'をサポートしないのだろうと思っていました。なぜデータフローはSortByKeyをサポートしていませんか?

「Order By」はスケーラビリティではないため、BigQueryには大きなテーブルがあり、ソートできません。だから、私はBigQueryの出力をDataflowに移してそこでソートすることを考えていました。しかし、SortByKeyはなく、コンバイナを書く必要があるようです。

ご意見をお寄せください。

答えて

1

ソート(特にキーによる)は、スケーラブルな操作ではないグローバルなシリアル処理を必要とします。 Apache Beam/Dataflowは、しばしば不要なので、このようなサポートを提供しません。

一般的にニーズをよりスケーラブルに扱うさまざまな代替方法があります。たとえば、各キー内の値をソートすると、各キーを並行して処理できます。別の一般的な使用例は、グローバルにまたはキーごとにTopNです。ここでも、実際にソートするよりもはるかに効率的にサポートできます。

並べ替えの必要性とその理由を詳しく説明できますか?これにより、BeamおよびDataflow SDK内でこれを実装するためのオプションを識別することが可能になります。

+0

ありがとうございます。私はソートされていないVCF(Variant Call Format)ファイルを持っています。 KV 、オブジェクト>>私の場合、それは疎な行列です。テーブルを複数のサブクエリ(たとえば、染色体ごとに)に分割しようとしましたが、高コストなためBigQueryを避けることをおすすめしました。何を指示してるんですか? – AmirCS

+0

質問を更新して、ソートが必要なものと何が必要なものかを説明できますか?あなたの説明に基づいて、どのような並べ替えが必要かは明確ではありません。たとえば、グローバルなソートは必要ないはずです。これを 'ChromosomeID、KV >'に変更し、 'ChromosomeID'内で' Start'で値をソートすると、各キー内でソートするだけでグローバルソートは必要ありません。 –

+0

申し訳ありません。 <染色体、開始>を主キーとみなすことができます。あなたはgroupByKey <染色体ID>を意味し、次に開始に基づいてソートしますか?しかし、私は各グループが記憶に収まらないことを恐れています。 – AmirCS

関連する問題