2016-10-18 14 views
1

他の人がこの問題にぶつかり、対処方法を知っていますか?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

答えて

0

あなたが次のことを試したことがありますか?

val dfRenamed = bar.withColumnRenamed("TranId", " Transaction ID") 
val newDF = foo.join(dfRenamed, Seq("Transaction ID"), "inner") 
関連する問題