2017-05-15 4 views

答えて

1

ストアドプロシージャが0以上の結果セットを返すことができるので、これは論理的に不可能です。

プロシージャで生成された行数が少ない場合は、ドライバアプリケーションでクエリを実行し、結果セットをDataframe/Datasetに変換できます。次のコードは、RWのResultSet

val conn = DriverManager.getConnection("jdbc:mysql://database/schema?user=username&password=pass") 
val rs = conn.createStatement.executeQuery("exec stored_procedure()") 
val data = Iterator.continually((rs.next(), rs)).takeWhile(_._1).map({case (_,rs) => rs.getString("col1") -> rs.getString("col2")}).toList // get the necassary columns (here I am getting col1,col2) 
sc.parallelize(data).toDF() 

あるいはストアドプロシージャからデータフレームを生成し、例えば テーブルに結果セットを記述するように変更することができ、テーブルは、データフレームを作成するために読み取ることができます。

+0

rddを使用してストアドプロシージャの結果を雪崩にすることはできませんか?あなたの最初の選択肢に関する詳細情報を提供できますか? – ca9163d9

+0

@ dc7a9163d9はオプション1のコード例で答えを更新しました –

関連する問題