La lecture des données à partir de SQL Server à l'aide de Spark SQL
Est-il possible de lire les données à partir de Microsoft Sql Server (et oracle, mysql, etc.) dans un rdd dans une Étincelle de l'application? Ou avons-nous besoin pour créer un ensemble de mémoire et parallize que dans un RDD?
ça va être sans réponse pour vous 😛
semble si...quelle en est la raison? si l'on peut munge de données de tout, pourquoi pas le plus courant de magasins?
vous devrez attendre quelques jours pour obtenir cette réponse que la balise
Vous pouvez certainement lire les données dans le pilote et puis paralléliser que dans un EDR. Si vous êtes à la recherche d'une solution plus évolutive, vous voudrez probablement regarder dans l'aide de
semble si...quelle en est la raison? si l'on peut munge de données de tout, pourquoi pas le plus courant de magasins?
vous devrez attendre quelques jours pour obtenir cette réponse que la balise
apache-spark
est très solennellement utilisé. Attendre pour un couple de jours pour apache gars pour répondre à votre question.Vous pouvez certainement lire les données dans le pilote et puis paralléliser que dans un EDR. Si vous êtes à la recherche d'une solution plus évolutive, vous voudrez probablement regarder dans l'aide de
DBInputFormat
avec les sparks "Hadoop API". Je n'ai pas fait cela avant, mais il semble que quelque chose de bon à regarder dans.
OriginalL'auteur ashic | 2014-10-07
Vous devez vous connecter pour publier un commentaire.
Trouvé une solution à ce à partir de la liste de diffusion. JdbcRDD peut être utilisé pour cela. J'avais besoin d'obtenir le MS Sql Server jar du pilote JDBC et l'ajouter à la bibliothèque pour mon projet. Je voulais utiliser la sécurité intégrée, et il est donc nécessaire de mettre sqljdbc_auth.dll (disponible dans le même télécharger) dans un emplacement de java.de la bibliothèque.chemin d'accès peut voir. Ensuite, le code ressemble à ceci:
Cela donne un Ca de SomeClass.Les deuxième, troisième et quatrième paramètres sont requis et sont pour les limites inférieure et supérieure, et le nombre de partitions. En d'autres termes, que la source des données doit être rangement a division par longs pour que cela fonctionne.
OriginalL'auteur ashic
Spark 1.4.0+ vous pouvez maintenant utiliser
sqlContext.read.jdbc
Qui vous donnera un DataFrame au lieu d'un EDR de Ligne des objets.
L'équivalent de la solution que vous avez posté ci-dessus serait
sqlContext.read.jdbc("jdbc:sqlserver://omnimirror;databaseName=moneycorp;integratedSecurity=true;", "TABLE_NAME", "id", 1, 100000, 1000, new java.util.Properties)
Il devrait reprendre le schéma de la table, mais si vous voulez de la force, vous pouvez utiliser le schéma de la méthode après avoir lu
sqlContext.read.schema(...insert schema here...).jdbc(...rest of the things...)
Noter que vous ne pourrez pas obtenir un CA de SomeClass ici (ce qui est plus agréable de mon point de vue). Au lieu de cela, vous aurez un DataFrame de ces domaines.
Plus d'informations peuvent être trouvées ici: http://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases
OriginalL'auteur kanielc