SparkSQl外部データソースのデータをJDBCで読み出す


Sparkバージョン:2.2.0
JDBC構成では、Mysql、Oracle、Gbase、Hiveなどのデータベースのデータを読み込むことができます.JDBC構成オプションは次のとおりです.
構成名
意味url
接続するJDBC URL.dbtable
読み込むべきJDBCテーブル.FROMは、SQLクエリの句で有効なものを使用できます.たとえば、完全なテーブルではなくカッコでサブクエリを使用することもできます.driver
このURLに接続するためのJDBCドライバのクラス名.partitionColumn, lowerBound, upperBound, numPartitions
オプションが指定されている場合は、これらのオプションをすべて指定する必要があります.複数の作業者から並列に読み込まれたときにテーブルをパーティション化する方法について説明します.partitionColumnは、関連するテーブルの数値列でなければなりません.lowerBoundおよびupperBoundは、表で行をフィルタするのではなく、パーティションのステップ幅を決定するために使用されるだけであることに注意してください.したがって、テーブル内のすべてのローがパーティション化され、返されます.fetchSize
JDBCは、往復ごとに取得するローの数を決定するサイズを抽出します.これにより、JDBCドライバのパフォーマンスが向上し、デフォルトでは低読み取りサイズ(たとえば、Oracleは10行)になります.
次に、MysqlとHiveデータベースの読み込みを例に挙げます.
pomファイル

    
      org.apache.spark
      spark-core_2.11
      2.2.0
    
    
      mysql
      mysql-connector-java
      5.1.6
    
    
      org.apache.hive
      hive-jdbc
      2.1.0
    
    
      org.apache.spark
      spark-hive_2.11
      2.2.0
    
  

手順は次のとおりです.
package org.lw.spark;

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

import java.util.HashMap;
import java.util.Map;

public class SparkJDBC{


    public static  void main(String aes[]){
        //    SparkSession
        SparkSession spark=SparkSession
                .builder()
                .appName("SparkJDBC")
                .master("local[2]")
                .getOrCreate();


        //  Mysql JDBC   
        Map options = new HashMap<>();
        options.put("url", "jdbc:mysql://192.168.8.1:3306/sample");
        options.put("driver", "com.mysql.jdbc.Driver");
        options.put("dbtable", "test");
        options.put("user", "user");
        options.put("password", "pwddd");

        Dataset jdbcDF = spark.read().format("jdbc").options(options).load();

        jdbcDF.show();

        //   Hive JDBC   
        Map options2 = new HashMap<>();
        options2.put("url", "jdbc:hive2://192.168.8.2:10000/default");
        options2.put("driver", "org.apache.hive.jdbc.HiveDriver");
        options2.put("dbtable", "sample_07");


        Dataset jdbcDF2 = spark.read().format("jdbc").options(options2).load();

        jdbcDF2.show();

    }
}