SparkはJDBCを介して一部のデータを読み込み、フィルター条件を追加します


SparkSQLを使用して、JDBCを介してMySQL、Oracle、Greenplumなどを接続し、データの操作を実現する必要がある場合、データテーブルの全量をロードする必要がない場合があります。次に例を示します。


条件に従ってフィルタリングする必要があるフィールドは一部だけです。
現時点では、JDBCに接続するときにオプション( "dbtable"、tablename)属性の値を変更する必要があります。sparkの公式Webサイトにある属性の概要を参照してください:(spark2.3 jdbc-他のデータベースへの詳細な属性リンク)

プロパティ名意味
url接続するJDBC URL。ソース固有の接続プロパティは、URLで指定できます。例:jdbc:postgresql:// localhost / test?user = fred&password = secret
dbtable読み取る必要のあるJDBCテーブル。SQLクエリのFROM句で有効なものはすべて使用できることに注意してください。たとえば、完全なテーブルの代わりに、括弧でサブクエリを使用することもできます。
driverこのURLへの接続に使用するJDBCドライバーのクラス名。
…………
dbtable:取得されたJDBC表。また、完全な表ではなく、括弧内で子句を使用することもできます。

テストコードは次のとおりです。

オブジェクトJDBCSource {
    def main(args:Array [String]):Unit = {
        val conf = new SparkConf()。setAppName( "Greenplum_test")。setMaster( "local [*]")
        val sc = new SparkContext(conf)
        sc .setLogLevel( "WARN")
        val spark = SparkSession.builder()。config(conf).getOrCreate()
        
        // dbtableがSELECTステートメントのソースとして使用されるため。サブクエリステートメントを入力する場合は、エイリアスを指定する必要があり
        ますval tablename = "(select id、name、gender from test.info where gender = 'man')temp"
        
        val data = spark.sqlContext.read
          .format( "jdbc ")
          .option(" driver "、" com.mysql.jdbc.Driver ")
          .option(" url "、" jdbc:mysql:// localhost:3306 / test "

          .option( "user"、 "username").
          option( "password"、 "password").
          load()

        data.show()
  }
}
 

19件の元の記事を公開 賞賛4 170,000回+

おすすめ

転載: blog.csdn.net/u011250186/article/details/105435031