SparkSQl外部データソースのデータをJDBCで読み出す
Sparkバージョン:2.2.0
JDBC構成では、Mysql、Oracle、Gbase、Hiveなどのデータベースのデータを読み込むことができます.JDBC構成オプションは次のとおりです.
構成名
意味
接続するJDBC URL.
読み込むべきJDBCテーブル.
このURLに接続するためのJDBCドライバのクラス名.
オプションが指定されている場合は、これらのオプションをすべて指定する必要があります.複数の作業者から並列に読み込まれたときにテーブルをパーティション化する方法について説明します.
JDBCは、往復ごとに取得するローの数を決定するサイズを抽出します.これにより、JDBCドライバのパフォーマンスが向上し、デフォルトでは低読み取りサイズ(たとえば、Oracleは10行)になります.
次に、MysqlとHiveデータベースの読み込みを例に挙げます.
pomファイル
手順は次のとおりです.
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();
}
}