2017-11-20 6 views
0

異なる変換(結合、マップなど)でデータセットを作成し、hbaseのテーブルAに保存したとしましょう。今私は特定の列を選択すると、hbaseの別のテーブルに同じデータセットを保存します。この場合、テーブルAに保存した後に、persist関数を使用する必要がありますか?または、私が選択機能だけを使用する場合、それは重要ではありませんか?例えばデータセットを再利用する際にspark persist関数を使用する

Dataset<Row> ds = //computing dataset by different transformations 
//save ds to table A in hbase 

ds.persist(); 

Dataset<Row> ds2 = ds.select(col("X")); 
//save ds2 to table B in hbase 

Dataset<Row> ds3 = ds.select(col("Y"),col("Z")); 
//save ds3 to table C in hbase 

ds.unpersist(); 

答えて

1

Scalaは遅延型です。この場合、データを永続化しないとすべての変換がすべてのアクションでやり直されます。 ds

Dataset<Row> ds = //computing dataset by different transformations 

データセットを計算することは時間がかかる場合したがって、absolutlyデータを永続化することが有利であろう。最高の効果を得るには、最初の保存(table Aに保存)の前に行うことをお勧めします。それ以後に迫害が行われると、データと変換のすべての読み取りが2回行われます。

unpersist()は、データセットとそれ以降のデータセットのすべての処理が完了するまで使用しないでください。

0

あなたは

Dataset<Row> ds = //computing dataset by different transformations 
ds.persist();  
//save ds to table A in hbase 

Dataset<Row> ds2 = ds.select(col("X")); 
//save ds2 to table B in hbase 

Dataset<Row> ds3 = ds.select(col("Y"),col("Z")); 
//save ds3 to table C in hbase 

ds.unpersist(); 

あなたはすべてを持続し、別のテーブルに列の異なるセットを保存しておくことができるこの方法を行うことができます。

関連する問題