2016-07-02 3 views

Antwort

4

Das Spark-Streaming verarbeitet jeweils einen Stapel. Darüber hinaus werden die einzelnen Datenelemente in jeder Charge in der Reihenfolge innerhalb der Charge verarbeitet. Wenn Spark nicht genügend Zeit hat, alle Datenelemente in einem Stapel zu erreichen, wenn der nächste kommt, werden diese Datenelemente standardmäßig gelöscht.

Wenn Sie jedoch eine erweiterte Verbindung zu Ihrem Stream wie Kafka verwenden, kann spark einen ausstehenden Stapel verarbeiten, sobald der aktuelle beendet ist. Dies führt dazu, dass Chargen in Kafka aufgebaut werden, und dieser Aufbau wird als "Gegendruck" bezeichnet, und er kann sich auch so weit entwickeln, dass Kafka ebenfalls Daten fallen lassen muss.

Wenn Sie keine erweiterte Verbindung wie Kafka verwenden und Ihr Datenstrom "stoßweise" ist, dh Zeiträume mit hohen Eingangsraten vorhanden sind, können Sie die Stapelzeiten erhöhen, um den Datenverlust zu minimieren.

2

Spark Streaming ist eine Zeit Bässe Pipeline. Wer zuerst kommt, mahlt zuerst. Es wird also nicht zu benachbarten Chargen zusammen verarbeitet, da es jede Charge auf die beste Weise verarbeitet, einschließlich der Verteilung der Arbeit. Der bessere Fall ist, dass es einen ausstehenden Stapel verarbeitet, sobald es den aktuellen beendet. Dies nennt man Gegendruck und funktioniert mit bestimmten Empfängern wie Kafka. Wenn nicht, werden diese Daten einfach verloren gehen.

+0

* "Wenn nicht, wird es einfach diese Daten verlieren" *, ich bin nicht wirklich klar für diesen Satz. Ihre Bedeutung, wenn Spark-Streaming nicht genug Zeit hat, um aktuelle Batch-Daten zu verarbeiten, und die nächste Charge kommt, die nächsten Batch-Daten können weggeworfen werden, ist es richtig? – Guo

+0

Ja. Dies ist richtig –

Verwandte Themen