0
スパークは2つのRDDを結合するzip()
関数を持っています。また、それらを再び分割する機能があります:keys()
とvalues()
。しかし、驚いたことに、keys()
だけを求めると、値が計算に必要でない場合でも、両方のRDDが完全に計算されます。スパーク:計算値なしの圧縮キーの抽出
この例では、私は(key, value)
のペアのRDDを作成しますが、私はキーだけを要求します。とにかく値が計算されるのはなぜですか?このような場合、Sparkは内部DAGを簡素化しようとしませんか?
In [1]: def process_value(val):
...: print "Processing {}".format(val)
...: return 2*val
...:
In [2]: k = sc.parallelize(['a','b','c'])
In [3]: v = sc.parallelize([1,2,3]).map(process_value)
In [4]: zipped = k.zip(v)
In [5]: zipped.keys().collect()
Processing 1
Processing 2
Processing 3
Out[5]: ['a', 'b', 'c']
ありがとうございました。値の計算を避ける 'keys()'の代わりがあるかどうか知っていますか? –
私は決してエキスパートではありませんが、RDDが本当に自分の価値観を十分に把握しているとは思っていません。 – placeybordeaux