Ich untersuche Verarbeitungsprotokolle von Web-Benutzersitzungen über Google Dataflow / Apache Beam und muss die Logs der Benutzer beim Eintreffen (Streaming) mit dem Verlauf einer Benutzersitzung aus dem letzten Monat kombinieren.
Ich habe mir die folgenden Ansätze angeschaut:
element
in processElement(ProcessContext processContext)
abzurufen.
Nach meinem Verständnis müssen die über .withSideInputs(pCollectionView)
geladenen Daten in den Speicher passen. Ich weiß, dass ich den gesamten Sitzungsverlauf eines einzelnen Benutzers in den Speicher aufnehmen kann, aber nicht alle Sitzungsverläufe.
Meine Frage ist, ob es eine Möglichkeit gibt, Daten von einer Nebeneingabe zu laden / zu streamen, die nur für die aktuelle Benutzersitzung relevant ist.
Ich stelle mir eine ParDo-Funktion vor, die die History-Sitzung des Benutzers von der Seiteneingabe lädt, indem sie die ID des Benutzers angibt. Aber nur die History-Sitzung des aktuellen Benutzers würde in den Speicher passen; Das Laden von all Verlaufssitzungen über die Seiteneingabe wäre zu groß.
Einige Pseudo-Code zur Veranschaulichung:
%Vor%Es gibt derzeit keine Möglichkeit, auf die Eingaben per Key-Seite im Streaming zuzugreifen, aber es wäre definitiv genau so nützlich, wie Sie es beschreiben, und wir denken darüber nach, es zu implementieren.
Eine mögliche Problemumgehung besteht darin, die Seiteneingaben zu verwenden, um Zeiger auf den tatsächlichen Sitzungsverlauf zu verteilen. Der Code, der die 24h-Sitzungshistorien generiert, könnte sie in GCS / BigQuery / etc hochladen und dann die Orte als Nebeneingabe an den Fügecode senden.
Tags und Links google-cloud-dataflow apache-flink apache-beam