2017-02-28 2 views
0

詳細:---reg:sqlContextのライブラリ依存関係は何ですか?

スパーク環境1.6.1、Scalaバージョン2.10.5(OpenJDK 64ビットサーバVM、Java 1.8.0_77)です。

「ライブラリ処理」オプションを使用して実行可能なjarを「生成されたjarに必要なライブラリを抽出する」として作成しました。 私はstackoverflowのの内と外、いくつかの研究を行なったし、私が行ったの火花提出オプション以下

火花提出--class spark_sqlserver_Conn.jar --master糸

で、スパークENVにjarファイルを実行します解決策を見つけることができますが、彼らは私のために働いていません。

これで、私が設定しようとしている適切な依存関係は何でしょうか?

私はまた、以下のようなエラーを取得しています: - スレッドで "メイン" ます。java.sql.SQLException:いいえ、適切なドライバ

package spark_sqlserver.tblcreation 

      import java.util.Properties 
      import java.sql.DriverManager 
      import java.sql.Connection 
      import org.apache.spark.SparkContext 
      import org.apache.spark.SparkConf 

      object SQLServerTbleCreate { 
       def main (args: Array[String]){    
        val conf = new SparkConf() 
           .setAppName("test SQL") 
           .setMaster("path to Spark Master Server") 
           .set("spark.executor.memory","1g"); 
        val sc = new SparkContext(conf) 
        val sqlContext = new org.apache.spark.SQLContext(sc) 

        var props= new java.util.Properties() 
        props.setProperty("driver",                                           "com.microsoft.sqlserver.jdbc.SQLServerDriver") 

     val jdbcDF = sqlContext.read.format("jdbc").options(Map("url" ->  "jdbc:sqlserver://xxx:xxxx/xxx?user=xxxxx&password=xxxxx", 
"dbtable"-> "xxxx")).load() 

     val test = sqlContext.sql("SELECT xxxx ,xxxx FROM xxxxx") 
     test.show(10) 

      } 
     } 

私の日食は、「Cで構成されます。\ Program Files \ Javaの\ jre1パスを構築する "

よろしく、.8.0_121 \ビン\サーバー\のjvm.dllが」私はを通じてsqljdbc4-2.0.jarバンドルされている

日食MARS2

"Amitesh Sahay

+0

pomファイルを投稿できますか? – FaigB

+0

\t org.apache.spark 火花sql_2.10 1.6.1 \t org.scala-langの スカラコンパイラ 2.10.4 org.apache。 火花core_2.10 1.6.1 の火付け役 user3521180

答えて

0

エラーはバージョンパスの競合よりもクラスパスの問題です。あなたのクラスパスにドライバがあることを確認してください。また、プロジェクトを右クリックしてEclipseから確認することもできます。

「プロジェクト」→「ビルドパス」→「ビルドパスの設定」を右クリックしてEclipseを開きます。 「ライブラリ」タブで、「JARの追加」または「外部JARの追加」をクリックし、JARを指定します。

+0

こんにちはバラジ、はい、私は、JDBCドライバーのクラスパスのそのはよりと言うことができます。しかし、私は本当にそれを修正する方法を知りません。私はあなたの指示に従ってクラスパスを探してみましたが、多くのオプションがあります。正確なパスに案内してください。 – user3521180

+0

こんにちはBalaji、私はあなたが伝えたいものを何もしません。私はsqljdbc4.jarを動かして試しましたが、どちらも動作していません – user3521180

+0

@ user3521180私の回答を更新しました – BDR

0

まずアプリを起動するための正しい構文を提供し、また--jarsパラメータで必要な依存関係を提供必要

package spark_sqlserver.tblcreation 

import org.apache.spark.SparkContext 
import org.apache.spark.sql.SQLContext 
import org.apache.spark.SparkConf 

object SQLServerTbleCreate { 
    def main (args: Array[String]){    
     val conf = new SparkConf() 
        .setAppName("test SQL")      
        .set("spark.executor.memory","1g"); 
     val sc = new SparkContext(conf) 
     val sqlContext = new org.apache.spark.SQLContext(sc) 

     val jdbcSqlConnStr = "jdbc:sqlserver://xxx.xxx;databaseName=xxx;user=xxx;password=xxx;" 

     val jdbcDF = sqlContext.read.format("jdbc").options(Map("url" -> jdbcSqlConnStr, "dbtable" -> jdbcDbTable)).load() 


     val test = sqlContext.sql("SELECT xxxx ,xxxx FROM xxxxx") 
     test.show(10) 

     } 
} 

のようにコードを変更:

例えば
spark-submit --class "your main class full reference" --master yarn --deploy-mode cluster --jars "full path to your jars with comma delimiter" "your jar package" "args" 

spark-submit --class com.run.Main --master yarn --deploy-mode cluster --jars /home/user/test.jar,/home/user/log.jar application.jar "Hello!" 
+0

こんにちは、私のspark-submit構文が正しいです、私は多くのレベルで十字検定しましたが、ここに投稿する間に私は間違いを犯したかもしれません。私の主な目的は、それぞれの依存関係を含むjarファイルを作成して、コマンドライン引数を与える必要がないことです。何か、私はあなたの提案を依然として試してみます – user3521180

+0

私はあなたの指示に従って実行しました spark-submit --class com.xxx.SQLConn spark_sqlserver_Conn.jar --jars /usr/iop/123/spark/lib/sqljdbc4.jar --deploy-mode cluster --master yarn。 私はまだ同じエラーが発生します – user3521180

+0

答えを – FaigB

関連する問題