他の人がこの問題にぶつかり、対処方法を知っていますか?Spark 2.0.1 DataFrameで内部結合を実行するとエラーが発生する
Spark 2.0.1とScala 2.11を使用するようにコードを更新しようとしています。 Scala 2.10でSpark 1.6.0で楽しく作業していました。私はエラーを返す内部結合にデータフレームへの簡単なデータフレームを持っています。データはAWS RDSオーロラからのものです。以下のfooデータフレームは実際には92カラムであり、私が示した2カラムではありません。列が2つしかない場合でも問題は解決しません。
関連情報:
val asdf = foo.join(bar, foo("Transaction ID") === bar("TranId"))
println(foo.join(bar, foo("Transaction ID") === bar("TranId")).explain())
== Physical Plan ==
*BroadcastHashJoin [Transaction ID#0], [TranId#202], Inner, BuildRight
:- *Scan JDBCRelation((SELECT
...
I REMOVED A BUNCH OF LINES FROM THIS PRINT OUT
...
) as x) [Transaction ID#0,BIN#8] PushedFilters: [IsNotNull(Transaction ID)], ReadSchema: struct<Transaction ID:string,BIN:string>
+- BroadcastExchange HashedRelationBroadcastMode(List(input[0, string, false]))
+- *Filter isnotnull(TranId#202)
+- InMemoryTableScan [TranId#202, Amount_USD#203, Currency_Alpha#204], [isnotnull(TranId#202)]
: +- InMemoryRelation [TranId#202, Amount_USD#203, Currency_Alpha#204], true, 10000, StorageLevel(disk, memory, deserialized, 1 replicas)
: : +- Scan ExistingRDD[TranId#202,Amount_USD#203,Currency_Alpha#204]
なしの説明とデータフレームの接合スキーマ
bar.show()
+--------------------+-----------------+-------------------+
| TranId| Amount_USD| Currency_Alpha|
+--------------------+-----------------+-------------------+
| bbBW0| 10.99| USD|
| CyX50| 438.53| USD|
+--------------------+-----------------+-------------------+
println(bar.printSchema())
root
|-- TranId: string (nullable = true)
|-- Amount_USD: string (nullable = true)
|-- Currency_Alpha: string (nullable = true)
とスキーマ
foo.show()
+--------------------+------+
| Transaction ID| BIN|
+--------------------+------+
| bbBW0|134769|
| CyX50|173622|
+--------------------+------+
println(foo.printSchema())
root
|-- Transaction ID: string (nullable = true)
|-- BIN: string (nullable = true)
データフレーム2と
データフレーム1私が手にエラーがこれですワット:
16/10/18 11:36:50 ERROR Executor: Exception in task 0.0 in stage 6.0 (TID 6)
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ID IS NOT NULL)' at line 54
フルスタックは、データベースからデータを引っ張って、どこにも私のコード内や私のJDBCクエリで(http://pastebin.com/C9bg2HFt)ここ
を見ることができない、私はID IS NOT NULL)
を持っています。 Sparkのコミットを見つけて、ジョインのクエリプランにnullフィルタを追加しました。ここにコミットがあります(https://git1-us-west.apache.org/repos/asf?p=spark.git;a=commit;h=ef770031)