2016-12-29 38 views
0

ENV:星火1.6使用Scala,Cloudera的
SQL Server 2012中,11.0版從Spark Scala查詢SQL Server - 如何?

我試圖從星火查詢SQLServer的。

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) 
} 

我prom.xml有dependencies-

<!-- 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到類路徑。我的Hadoop集羣沒有連接到互聯網。創建maven的包後,我嘗試使用提交

spark-submit --class ConnTest /Hadoopshare/tmp/sqldb-1.0-SNAPSHOT.jar 

錯誤:

Exception in thread "main" java.sql.SQLException: No suitable driver 

感謝
侯賽因

+0

由於您的羣集沒有互聯網連接來下載jar,因此您需要使用依賴項(mssql-jdbc)構建jar。或者你可以將這個罐子移動到你的集羣並做maven安裝 – mrsrinivas

回答

0

這應該被添加到您的代碼:

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() 

希望這應該工作。

+0

謝謝@toofrellik。這是工作。 – Jhon

+0

小更新,驅動程序和URL- – Jhon

+0

VAL jdbcDF = sqlContext.read .format( 「JDBC」) 。選項( 「驅動器」, 「com.microsoft.sqlserver.jdbc.SQLServerDriver」) 。選項(「URL 「,」jdbc:mysql:// :3306; >「) .option(」dbtable「,」(SELECT id,name FROM partner)tmp「) .option(」user「,」用戶名「) .option(」password「,」******「) .load() – Jhon