È possibile leggere dati da Microsoft Sql Server (e oracle, mysql, ecc.) In un rdd in un'applicazione Spark? O abbiamo bisogno di creare un set di memoria e metterlo in parallelo in un RDD?Lettura di dati da SQL Server utilizzando Spark SQL
risposta
Trovato una soluzione a questo dalla mailing list. JdbcRDD può essere utilizzato per realizzare questo. Avevo bisogno di ottenere il jar del driver JDBC di MS Sql Server e aggiungerlo alla libreria lib per il mio progetto. Volevo usare la sicurezza integrata, e quindi avevo bisogno di mettere sqljdbc_auth.dll (disponibile nello stesso download) in una posizione che java.library.path possa vedere. Quindi, il codice simile a questo:
val rdd = new JdbcRDD[Email](sc,
() => {DriverManager.getConnection(
"jdbc:sqlserver://omnimirror;databaseName=moneycorp;integratedSecurity=true;")},
"SELECT * FROM TABLE_NAME Where ? < X and X < ?",
1, 100000, 1000,
(r:ResultSet) => { SomeClass(r.getString("Col1"),
r.getString("Col2"), r.getString("Col3")) })
Questo dà un DDR di SomeClass.The secondo, terzo e quarto parametro Sono necessari per limiti inferiore e superiore, e il numero di partizioni. In altre parole, i dati sorgente devono essere partizionabili in base al tempo necessario affinché funzioni.
In Spark 1.4.0+ è ora possibile utilizzare sqlContext.read.jdbc
che vi darà un dataframe invece di un RDD di Row oggetti.
L'equivalente alla soluzione che hai postato sopra sarebbe
sqlContext.read.jdbc("jdbc:sqlserver://omnimirror;databaseName=moneycorp;integratedSecurity=true;", "TABLE_NAME", "id", 1, 100000, 1000, new java.util.Properties)
Dovrebbe prendere lo schema della tabella, ma se vuoi per forzarlo, è possibile utilizzare il metodo dello schema dopo leggi sqlContext.read.schema(...insert schema here...).jdbc(...rest of the things...)
Nota che non otterrai un RDD di SomeClass qui (che è più bello a mio avviso). Invece otterrai un DataFrame dei campi pertinenti.
Maggiori informazioni si possono trovare qui: http://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases
- 1. Lettura di dati da Microsoft SQL Server in R
- 2. MapReduce utilizzando SQL Server come origine dati
- 3. dati da SQL Server per elasticsearch Nodo
- 4. Importazione dati da server sql per l'accensione locale
- 5. Come esportare i dati da SQL Server?
- 6. Supporto Spark Sql JDBC
- 7. Rimuovi tabelle temporanee da Apache SQL Spark
- 8. Connessione a SQL Server tramite PDO utilizzando SQL Server Driver
- 9. SQL Server/ordine da
- 10. La lettura di un file di testo con SQL Server
- 11. sql server compact edition Editor di dati
- 12. Utilizzando RegEx in SQL Server
- 13. SQL SPARK - aggiorna la tabella MySql utilizzando DataFrames e JDBC
- 14. Come connettersi a SQL Server utilizzando LINQ to SQL?
- 15. È possibile recuperare i dati da SQL Server usando jQuery?
- 16. Riferimento sintassi Spark SQL
- 17. Spark SQL campi multipli
- 18. NullPointerException in spark-sql
- 19. Spostamento ripetuto di dati da SQL Server a Oracle
- 20. Come eseguire lo script sql utilizzando SQL Server Management Studio?
- 21. Come inserire dati binari nel server SQL utilizzando SSMS
- 22. ASP.Net SessionState utilizzando SQL Server: i dati sono crittografati?
- 23. SQL in SQL Server
- 24. Revisione dati di SQL Server modifica
- 25. Soluzione di archiviazione dati SQL Server
- 26. SQL Server Tipo di dati esadecimali
- 27. migrazione da Oracle a SQL Server
- 28. Esportare i dati da SAP a SQL Server
- 29. SQL Server ROW_NUMBER() su SQL Server 2000?
- 30. SQL Server: incuriosito da GETDATE()
questo sta andando essere senza risposta certa: P – khandelwaldeval
sembra così ... qualsiasi motivo? se può cancellare dati da tutto, perché non i negozi più comuni? – ashic
dovrai aspettare qualche giorno per ottenere questa risposta, poiché il tag apache-spark' è usato molto solennemente. Aspetta un paio di giorni che i ragazzi dell'apache rispondano alla tua domanda. – khandelwaldeval