0

In Beam (Dataflow 2.0.0), ich lese ein PubSub Thema und dann versuchen, einige Zeilen aus Bigtable basierend auf der Nachricht aus dem Thema zu holen. Ich konnte keinen Weg finden, die BigTable basierend auf den Pubsub-Nachrichten durch die Beam-Dokumentation zu scannen. Ich habe versucht, die ParDo-Funktion zu schreiben und sie vergeblich in die Strahlrohrleitung zu leiten.Lesen von Google PubSub und dann lesen von Bigtable basierend auf der PubSub Nachricht Thema

Die BigTableIO gibt eine Option zu lesen, aber das ist außerhalb der Pipeline und bin nicht sicher, dass es in der dampfenden Mode als mein Anwendungsfall funktionieren würde.

Kann mir bitte jemand wissen, wenn dies möglich ist, wie in Streaming PubSub und lesen BigTable basierend auf dem Inhalt der Nachricht.

P.S: Ich benutze Java API in Beam 2.0.

Jetzt möchte ich die keyLines fungieren als die Zeilenschlüssel zum Scannen der BigTable. Ich benutze das folgende Code-Snippet von BigTable. Ich kann 'RowFilter.newBuilder()' und 'ByteKeyRange' sehen, aber beide scheinen im Batch-Modus zu funktionieren, nicht im Streaming-Modus.

pipeline.apply("read", 
       BigtableIO.read() 
        .withBigtableOptions(optionsBuilder) 
        .withTableId("**********"); 

    pipeline.run(); 

Bitte beraten.

Antwort

1

Sie sollten von BigTable in einem ParDo lesen können. Sie müssten Cloud Big Table oder HBase API direkt verwenden. Es ist besser, den Client in @Setup Methode in Ihrem DoFn (example) zu initialisieren. Bitte posten Sie mehr Details, wenn es nicht funktioniert.

+0

Danke für die Info. Ich habe mein Code-Snippet hinzugefügt. Es wäre besser, wenn Sie das klären könnten. –

+0

Ich glaube nicht, dass Sie 'BigtableIO.read()' Quelle so verwenden können. In Ihrem Fall stellt jede "keyLine" einen einzelnen Schlüssel zur Verfügung, den Sie nachschlagen möchten, oder stellt jeder einzelne einen potenziell großen Scan dar, den Sie mit BigtableIO.read() scannen möchten? Wenn es das erstere ist, ist eine explizite BigTable-Suche in einem 'ParDo' gut (direktes Verwenden der Bigtable-API). Letzteres ist machbar in Beam mit neuer API für Quellen ([SplitTable DoFn] (https://s.apache.org/splittable-do-fn])), aber es gibt keine vorgefertigte Implementierung, die Ihren Anwendungsfall bereits behandelt (zB für jede Zeile einen Bitatble-Reader starten). –

Verwandte Themen