从 Spark Scala 查询 SQL 服务器 - 如何?
Query SQL Server from Spark Scala - How to?
环境:Spark 1.6 与 Scala、Cloudera
SQL 服务器 2012,版本 11.0
我正在尝试从 Spark 查询 SQL 服务器。
object ConnTest extends App {
val conf = new SparkConf()
val sc = new SparkContext(conf.setAppName("Spark Ingestion").setMaster("local[*]"))
val sqlcontext = new SQLContext(sc)
val prop=new Properties()
val url2="jdbc:sqlserver://xxx.xxx.xxx:1511;user=username;password=mypassword;database=SessionMonitor"
prop.setProperty("user","username")
prop.setProperty("password","mypassword")
val test=sqlcontext.read.jdbc(url2,"Service",prop)
val dd = sqlcontext.sql("select count(*) as TOT from Service")
dd.foreach(println)
}
我的pom.xml
有依赖项-
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre8</version>
</dependency>
我没有下载任何 jar
文件;也不会将 jar
安装到 Maven 存储库,也不会将 jar
添加到 class 路径。我的 Hadoop 集群没有连接到 Internet。创建maven包后,我尝试使用
提交
spark-submit --class ConnTest /Hadoopshare/tmp/sqldb-1.0-SNAPSHOT.jar
错误:
Exception in thread "main" java.sql.SQLException: No suitable driver
这应该添加到您的代码中:
prop.setProperty("driver" , "com.mysql.jdbc.Driver")
在我的例子中,我使用了这个并且它完全工作正常:
val jdbcDF = sqlContext.read
.format("jdbc")
.option("driver" , "com.mysql.jdbc.Driver")
.option("url", "jdbc:mysql://<<>Servername>:3306/<<DatabaseName>>")
.option("dbtable", "(SELECT id, name FROM partner) tmp")
.option("user", "username")
.option("password", "******")
.load()
希望这能奏效。
环境:Spark 1.6 与 Scala、Cloudera
SQL 服务器 2012,版本 11.0
我正在尝试从 Spark 查询 SQL 服务器。
object ConnTest extends App {
val conf = new SparkConf()
val sc = new SparkContext(conf.setAppName("Spark Ingestion").setMaster("local[*]"))
val sqlcontext = new SQLContext(sc)
val prop=new Properties()
val url2="jdbc:sqlserver://xxx.xxx.xxx:1511;user=username;password=mypassword;database=SessionMonitor"
prop.setProperty("user","username")
prop.setProperty("password","mypassword")
val test=sqlcontext.read.jdbc(url2,"Service",prop)
val dd = sqlcontext.sql("select count(*) as TOT from Service")
dd.foreach(println)
}
我的pom.xml
有依赖项-
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre8</version>
</dependency>
我没有下载任何 jar
文件;也不会将 jar
安装到 Maven 存储库,也不会将 jar
添加到 class 路径。我的 Hadoop 集群没有连接到 Internet。创建maven包后,我尝试使用
spark-submit --class ConnTest /Hadoopshare/tmp/sqldb-1.0-SNAPSHOT.jar
错误:
Exception in thread "main" java.sql.SQLException: No suitable driver
这应该添加到您的代码中:
prop.setProperty("driver" , "com.mysql.jdbc.Driver")
在我的例子中,我使用了这个并且它完全工作正常:
val jdbcDF = sqlContext.read
.format("jdbc")
.option("driver" , "com.mysql.jdbc.Driver")
.option("url", "jdbc:mysql://<<>Servername>:3306/<<DatabaseName>>")
.option("dbtable", "(SELECT id, name FROM partner) tmp")
.option("user", "username")
.option("password", "******")
.load()
希望这能奏效。