Lesen von Daten aus SQL Server mithilfe von Spark SQL
Ist es möglich, zum Lesen von Daten aus Microsoft Sql Server (oracle, mysql, etc.) in einer rdd in einer Spark-Applikation? Oder brauchen wir zum erstellen einer in-memory-set und parallize, dass in ein RDD?
- dies ist gonna be unbeantwortete sicher 😛
- scheint so...irgendeinen Grund, warum? wenn es munge Daten aus alles, warum nicht die gemeinsame Geschäfte?
- Sie müssen warten, für ein paar Tage, um diese beantwortet wird, wie der tag
apache-spark
ist sehr feierlich eingesetzt. Warten Sie ein paar Tage für die apache Jungs um Ihre Frage zu beantworten. - Sie können sicherlich Lesen die Daten in den Treiber und dann parallelisieren, die in einem RDD. Wenn Sie auf der Suche nach einer skalierbaren Lösung, die Sie wahrscheinlich wollen, zu schauen, mit
DBInputFormat
mit Spark ' s "Hadoop-API-Methoden. Ich habe nicht dies getan, bevor, aber wie es scheint, etwas gutes zu schauen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Lösung gefunden, um diese aus der mailing-Liste. JdbcRDD können zu diesem Zweck verwendet werden. Ich brauchte, um die MS-Sql-Server-JDBC-Treiber-jar und fügen die lib für mein Projekt. Ich wollte die integrierte Sicherheit verwenden, und so die benötigt werden, um sqljdbc_auth.dll (im gleichen laden) in einer location, java.Bibliothek.Pfad sehen kann. Dann, der code sieht so aus:
Gibt einen Rdd von SomeClass.Die zweite, Dritte und vierte Parameter sind erforderlich und werden für die unteren und oberen Grenzen und Anzahl der Partitionen. In anderen Worten, dass die Quelle der Daten muss durch teilbaren sehnt sich danach, für diese zu arbeiten.
Zündkerzen 1.4.0+ können Sie nun mit
sqlContext.read.jdbc
Geben Sie ein DataFrame statt eines RDD von Row-Objekten.
Entspricht der Lösung, die Sie oben gepostet wäre
sqlContext.read.jdbc("jdbc:sqlserver://omnimirror;databaseName=moneycorp;integratedSecurity=true;", "TABLE_NAME", "id", 1, 100000, 1000, new java.util.Properties)
Sollte es abholen, das schema der Tabelle, aber wenn Sie möchten, es zu zwingen, können Sie die schema-Methode, nach dem Lesen
sqlContext.read.schema(...insert schema here...).jdbc(...rest of the things...)
Beachten Sie, dass Sie nicht bekommen eine RDD von SomeClass hier (was ist schöner, in meiner Sicht). Stattdessen erhalten Sie einen DataFrame, der die entsprechenden Felder ein.
Mehr Informationen finden Sie hier: http://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases