2017-06-26 4 views
1

Ist jemandem bekannt, wie die Bundles in BigtableIO funktionieren? Alles sieht gut aus, bis man GroupBy oder Combine DoFn verwendet. An diesem Punkt würde die Pipeline den Bereich unseres Elements von PaneInfo.NO_FIRING zu PaneInfo{isFirst=true, isLast=true, timing=ON_TIME, index=0, onTimeIndex=0} ändern und dann BigtableIO das folgende Protokoll INFO o.a.b.sdk.io.gcp.bigtable.BigtableIO - Wrote 1 records ausgeben. Führt die Protokollierung zu einem Leistungsproblem, wenn Millionen von Datensätzen ausgegeben werden, oder ist es die Tatsache, dass BigtableIO einen Writer für jeden Datensatz öffnet und schließt?Warum BigtableIO Datensätze nacheinander nach GroupBy/Combine DoFn schreibt?

Antwort

1

BigtableIO sendet mehrere Datensätze in einem Batch-RPC. Dies setzt jedoch voraus, dass mehrere Datensätze im "Bundle" gesendet werden. Bundle-Größen sind abhängig von einer Kombination aus dem vorherigen Schritt und dem Dataflow-Framework. Die Probleme, die Sie sehen, scheinen nicht direkt mit BigtableIO verwandt zu sein.

FWIW, here ist der Code zum Protokollieren der Anzahl der Datensätze, die in der finishBundle()-Methode auftritt.

+0

Ich habe das auch verstanden, aber ich frage mich, warum es Bündel von nur 1 Rekord macht. Wäre kein Trick, um die minimale Bundle-Größe zu setzen? Ich habe versucht, ein anderes Fenster anzuwenden und nur auszulösen, wenn eine bestimmte Menge an Daten im Fenster angekommen ist, aber ich habe immer noch einen Datensatz pro Bündel ... –

Verwandte Themen