私はSparkで私の最初のステップを行い、現在JDBCドライバ経由でデータベースからデータをインポートする方法を探しています。 純粋なSparkSQLコマンドを使用して、別のチームの後で使用できるように、 DBから多数のテーブルへのアクセスを準備する予定です。 彼らはデータに集中でき、コードとの接触がなくなります。sparkで後で使用できるように多くのDBテーブルへのアクセスを準備する
私のDBへの接続は機能しており、これまでに2つのデータを取得するための2つの作業方法が見つかりました。
ウェイ1:
sqlContext.read.jdbc(url,"tab3",myProp).registerTempTable("tab3")
ウェイ2:
case class RowClass_TEST (COL1:String, COL2:String)
val myRDD_TEST= new JdbcRDD(sc,() => DriverManager.getConnection(url,username,pw), "select * from TEST where ? < ?", 0,1,1,row => RowClass_TEST(row.getString("COL1"),row.getString("COL2")) myRDD_TEST.toDF().registerTempTable("TEST")
しかし、両方の方法は、いくつかの悪い影響を持っているあなたはより多くの量を準備する必要がある場合、
ウェイ1はそれほど速くありません後で使用されない表の
ウェイ2つの作品非常に高速(I接続を作成する(例えば実行中に5人のJDBC部隊をトレース、ログイン、設定は、ヘッダのクエリ)接続を終了)が、スカラからcase class
重制限のhast。
この種のクラスでは、22個の値しか設定できません。
case class
を使用せずに方法2を設定する簡単な方法はありますか?
22個以上のカラムを持つDBテーブルにアクセスしたいとします。
私はすでにそれを動作させようとしましたが、私のScalaノウハウはまだ十分ではありません。
_Youできるだけでセットアップclass_が、この種の持つ22個の値 - それは長い時間が今は当てはまりません。 – zero323
ああ、いいよ。私はテストのフロントエンドとしてZeppelin Web GUIを使用しています。私のクラスから大文字クラスへのエラーメッセージ(ちょうど番号)があります。ボーダが新しいScalaバージョンで削除されましたか? – Xaltos
2.11 - https://issues.scala-lang.org/browse/SI-7296。しかし、まだ22の限界が存在します。 – zero323