2016-04-12 7 views
2

RDDを別のマップからより多くの情報で更新しようとしています....私はこれを書いたが動作していません。Scala - RDDを別のマップで更新する

どこ:

LocalCurrenciesある通貨クラス

RDDのシーケンス:RDD [文字列、文字列]

... 
val localCurrencies = Await.result(CurrencyDAO.currencies, 30 seconds) 

//update ISO3 
rdd.map(r => r.updated("currencyiso3", localCurrencies.find(c => c.CurrencyId == 
rdd.get("currencyid")).get.ISO3)) 

//Update exponent 
rdd.map(r => r.updated("exponent", localCurrencies.find(c => c.CurrencyId == 
rdd.get("currencyid")).get.Exponent)) 

任意の提案?

おかげ

+0

LocalCurrenciesはどのようなタイプのマップですか? –

+0

また、rddのタイプは何ですか? Rdd [String]ですか? –

+0

再現可能な例を示してください。サンプルデータは常に歓迎しますが、すべての変数のタイプから始めることができます。 – zero323

答えて

1

map RDDを変更しない、それは新しいものを(同じことが、すべてのスパークの変換に適用されます)を作成します。この新しいRDDで実際に何もしないと、Sparkはそれを作成することさえ気にしません。だから、(必要であれば、あなたはまだ、同様rddを使用することができます)

val rdd1 = rdd.map(...).map(...) // better to combine two `map`s into one 

を書き込み、1からrdd1で仕事をしたいです。これは必ずしも唯一のエラーではありませんが、修正する必要があります。

関連する問題