sql-server - Spark-sqlserver连接

标签 sql-server apache-spark data-analysis

我们可以将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/

相关文章:

sql-server - ISNULL 错误返回?

scala - 避免在 Spark 中使用 ReduceByKey 进行混洗

SQL 计数为零值

apache-spark - 使用 Spark 和 HiveSQL 执行多个查询的问题

scala - Spark中的map与mapValues

python - 为什么我收到 TypeError : unsupported operand type(s) for/: 'str' and 'int' ?

mysql - SQL:如何根据其他用户的喜好来推荐具有相关性的喜好?

c++ - T树对象;使用绘图选项来绘制差异直方图

SQL Server - 比较同一表中不同行中的多个列

sql - 在SQL Server中查找第100条、200条等记录