2016-04-16 4 views
1

Ich versuche, Spark MLib auf einen großen Datensatz, den wir derzeit in einer Zeitreihen-Datenbank beibehalten haben. Nehmen wir an, wenn wir Daten A, B, C, D und E in unserer Zeitreihendatenbank haben, würde ich zuerst A, B, C laden und eine Transformation durchführen und dann die transformierten Daten in Spark MLib übergeben.Apache Spark RDD-Workflow

Ich habe ein paar Fragen in dieser Hinsicht. Gibt es einen Standard-Workflow, den ich berücksichtigen sollte? Ich meine das Laden, Transformieren von Daten scheint mir immer noch eine Frage zu sein. Dies ist nicht spezifisch für Spark. Ich würde gerne wissen, ob es einen Vorteil bringt, Frameworks wie Apache Camel für die ETL zu verwenden und dann die Ergebnisse an Spark zu füttern?

Irgendwelche Vorschläge?

Antwort

0

Laden und Transformieren von Daten ist sicherlich nicht etwas spezifisch für Funken, aber es ist etwas, das es sehr gut ist. Sie erhalten viele nette Funktionen kostenlos, wie Fehlertoleranz, Faulheit, schnelle Stapelverarbeitung und eine einheitliche DSL für alles.

Müssen Sie gezielt in Phasen zwischenspeichern?

Möchten Sie Daten aus SQL, S3, Kafka und Twitter kombinieren, ohne 20 verschiedene ETL-Skripts zu verwalten?

Spark kann all das tun.

Es gibt auch einige Einschränkungen; Spark muss in der Lage sein, ein Lineage-Diagramm aus dem Datensatz und seinen angegebenen Transformationen zu erstellen, und alle Ops, die nicht idempotent sind (wie HTTP-Anfragen), brechen das Ganze ab.

Extrem allgemeine Zusammenfassung, ohne mehr zu wissen:

  1. Wenn Sie „eigene“ alle Datenquellen (dh sie befinden sich in einem DB oder etwas), kombinieren alle Ihre ETL und mllib Programme. Dann müssen Sie nicht Hot Potato mit Gigs und Gigs von Daten spielen.

  2. Wenn Sie sich auf einige Quellen externer Daten verlassen müssen, schreiben Sie einen Code, um ihn zu erhalten und zu besitzen.