我们可以将spark与sql-server连接吗?如果是这样,怎么办?
我是Spark的新手,我想将服务器连接到Spark并直接从sql-server工作,而不是上传.txt或.csv文件。请帮忙,谢谢。
最佳答案
以下是一些代码片段。 DataFrame用于创建表t2和插入数据。 SqlContext用于将数据从t2表加载到DataFrame中。我在我的spark-default.conf文件中添加了spark.driver.extraClassPath和spark.executor.extraClassPath。
//Spark 1.4.1
//Insert data from DataFrame
case class Conf(mykey: String, myvalue: String)
val data = sc.parallelize( Seq(Conf("1", "Delaware"), Conf("2", "Virginia"), Conf("3", "Maryland"), Conf("4", "South Carolina") ))
val df = data.toDF()
val url = "jdbc:sqlserver://wcarroll3:1433;database=mydb;user=ReportUser;password=ReportUser"
val table = "t2"
df.insertIntoJDBC(url, table, true)
//Load from database using SqlContext
val url = "jdbc:sqlserver://wcarroll3:1433;database=mydb;user=ReportUser;password=ReportUser"
val driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
val tbl = { sqlContext.load("jdbc", Map( "url" -> url, "driver" -> driver, "dbtable" -> "t2", "partitionColumn" -> "mykey", "lowerBound" -> "0", "upperBound" -> "100", "numPartitions" -> "1" ))}
tbl.show()
要考虑的一些问题是:
确保为端口1433打开了防火墙端口。
如果使用Microsoft Azure SQL Server DB,则表需要主键。某些方法创建表,但是Spark的代码未创建主键,因此表创建失败。
其他要注意的细节:https://docs.databricks.com/spark/latest/data-sources/sql-databases.html
资料来源:https://blogs.msdn.microsoft.com/bigdatasupport/2015/10/22/how-to-allow-spark-to-access-microsoft-sql-server/
关于sql-server - Spark-sqlserver连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48295493/