2016-12-06 8 views
0

私はスパークでかなり新しいです。私はデノードのデータプラットフォームを介してSQLサーバから3Mレコードを取得し、s3に書き込むタスクがあります。 SQL Server側では、2つのテーブルの結合に関するビューです。このビューは時間がかかります。なぜspark sqlはロード中に1 = 0を追加していますか?

SELECT * FROM myview WHERE 1=0 

そして、この部分は時間以上を取っている:私はその火花は次のようにクエリを送信して見ることができます

val resultDf = sqlContext.read.format("jdbc").option("driver","com.denodo.vdp.jdbc.Driver").option("url", url).option("dbtable", "myview").option("user", user).option("password", password) 

は、今私はスパークコマンドを実行しようとしています。

どこの句がここに追加されているのか教えていただけますか?

ありがとうございました。

答えて

0

あなたの問題を正しく理解している場合、SparkはSELECT * FROM myview WHERE 1=0をDenodoサーバーに送信しています。

この場合、そのクエリは、WHERE句に互換性のない条件が原因で結果のないクエリとしてDenodoによって検出され、実行は瞬間的でなければなりません。 DenodoのVQL Shell(バージョン6で利用可能)、Denodoの管理ツールまたは他のODBC/JDBCクライアントで同じクエリを実行して、クエリがデータソースに送信されていないことを検証することもできます。 Sparkが出力スキーマを最初に取得するためにそのクエリを実行しているのでしょうか?

使用しているDenodoのバージョンは何ですか?

関連する問題