2017-05-13 2 views
0

Ich möchte etwas wie das tun:Wie kann ich MySQL von einem Knoten abfragen und dann nach Funken filtern?

Zuerst generieren Sie eine Zufallszahl, und dann abfragen in mysql. Wenn es in mysql database existiert, werde ich weitere Informationen darüber in spark suchen.

Allerdings, wenn ich den Job zu spark cluster, jeder Knoten des Clusters submit wird eine andere Zufallszahl erzeugen und es dann in spark in mysql und als Suchkriterien. Habe ich recht?

Ich möchte nur eine Maschine (Knoten) eine Zufallszahl erzeugen und es in MySQL-Abfrage, und es dann in spark cluster suchen, wenn es in mysql existiert.

Außerdem sollte der obige Vorgang wiederholt ausgeführt werden.

Wie kann ich es tun? Jede Hilfe oder ein Hinweis wäre willkommen.

Antwort

0

Machen Sie Ihre Zufallsgenerierung und MySQL-Abfragen in einer Schleife im Treiber Ihres Spark-Programms, dann generieren Sie für jedes Ergebnis einen neuen Spark-Job aus Ihrer Follow-up-Abfrage. Um die bestmögliche Leistung asynchron zu erreichen, können Sie Sparks eingebauten Scheduler verwenden (in diesem Fall ist FIFO wahrscheinlich besser geeignet), um die Cluster-Auslastung hoch zu halten.

+0

Danke Rick. Aber wenn ich nur den Code in der Reihenfolge in scala schreibe, sagen "Erzeugen der Zufallszahl, Abfragen in mysql, Lesen der Datei von HDFS, und filter aus der Datei", wird es automatisch sie im Treiber und im Cluster separat ausführen? Wie Sie über "asynchron" gesagt haben, denke ich, dass der Producer-Consumer-Modus eine gute Wahl ist. Allerdings möchte ich einfach meinen Code jetzt einfach ~ – sizheng

+0

Jeder Vorgang, der RDD oder DataSet-API nicht ausführt, wird nur auf dem Treiber ausgeführt. So etwas wie 1 bis 10.par.map (Random.nextInt) wird auf dem Treiber ausgeführt. Bei jeder DataSet/RDD-Operation wird zunächst nur ein Job generiert, und Sie können mehrere Jobs an Spark senden, während die erste noch ausgeführt wird. Sie müssen nur die inhärente Parallelität Ihres Codes verwenden, um dies zu tun, und Scala parallele Sammlungen oder jede andere Abstraktion über Multithreading. Ihr Code wird sehr einfach bleiben. Das Lesen von HDFS sollte mit einer initialen DataSet-Operation erfolgen, bei der die Ausführung automatisch parallelisiert wird. –

Verwandte Themen