5

私はスパーク2.0.0を使用していますが、次のように2つのデータセット(データセット[行])があります。スパークデータセット - 内部結合問題

データセット 'appUsage': 'APPDEV'

+-------------------+------------------------------------+ 
|APP_ID    |DEVELOPER_ID      | 
+-------------------+------------------------------------+ 
|OurRating-985443645|5fff25c7-6a70-4d54-ad04-197be4b9a6a9| 
|Xa11d0-560090096095|5fff25c7-6a70-4d54-ad04-197be4b9a6a9| 
+-------------------+------------------------------------+ 

+----------+-------------------+----------+ 
|DATE  |APP_ID    |TIMES_USED| 
+----------+-------------------+----------+ 
|2016-08-03|06xgKq10eeq0REK4eAc|null  | 
|2016-08-03|ssads2wsdsf  |null  | 
|2016-08-03|testApp   |null  | 
|2016-08-03|3222aClie-971837083|5   | 
|2016-08-03|V2aadingTLV02  |null  | 
|2016-08-03|OurRating-985443645|5   | 
|2016-08-03|Trdssktin-743439164|null  | 
|2016-08-03|myaa1-app   |null  | 
|2016-08-03|123123123-013663450|null  | 
+----------+-------------------+----------+ 

データセットに私は左を行い、期待どおりにすべての作品を次のコードを使用して参加します。

val result = appUsage.join(appDev, Seq("APP_ID"), "left") 

出力は次のとおりです。

+-------------------+----------+----------+------------------------------------+ 
|APP_ID    |DATE  |TIMES_USED|DEVELOPER_ID      | 
+-------------------+----------+----------+------------------------------------+ 
|06xgKq10eeq0REK4eAc|2016-08-03|null  |null        | 
|ssads2wsdsf  |2016-08-03|null  |null        | 
|testApp   |2016-08-03|null  |null        | 
|3222aClie-971837083|2016-08-03|5   |null        | 
|V2aadingTLV02  |2016-08-03|null  |null        | 
|OurRating-985443645|2016-08-03|5   |5fff25c7-6a70-4d54-ad04-197be4b9a6a9| 
|Trdssktin-743439164|2016-08-03|null  |null        | 
|myaa1-app   |2016-08-03|null  |null        | 
|123123123-013663450|2016-08-03|null  |null        | 
+-------------------+----------+----------+------------------------------------+ 

しかし、私は、両方のデータセットに存在している行のみが結果セットの一部となるように、内部結合をやりたいです。しかし、私は次のコードを使用してそれを行うと、出力は空です。

val result = appUsage.join(appDev, Seq("APP_ID"), "inner") 

何か不足していますか?

答えて

0

はこれを試してみてください:

val result = appUsage.join(appDev, "APP_ID") 

私はSpark 2.0.0Databrics cloud上でそれを試してみましたが、それがうまく働きました。

thisを参照してください。

+0

問題は、特に結合ではありませんでした。私は一連の外部結合を使用して上記の「appUsage」データセットを構築していました。 Sparkオプティマイザのように、この問題の原因となる結合の順序が変更されているようです。私は別の質問としてそれを求めます。その外部結合を左結合に変更すると、appUsage.join(appDev、Seq( "APP_ID")、 "inner")も同様に機能します。助けてくれてありがとう! –