この問題はStackOverflowで何度も取り上げられています:
- DataFrameとJDBC接続を使用して低速のSparkジョブのパフォーマンスを向上させる方法
- spark jdbc df limit ...何をしているのですか?
- JDBCソースを使用して(Py)Sparkでデータを読み書きする方法
および外部ソース:
繰り返しになりますが、デフォルトではDataFrameReader.jdbc
データの配布や読み取りは行いません。シングルスレッド、シングルエグゼクティブを使用します。
読み取りを配布するには:
-
lowerBound
で範囲を使用する /upperBound
:Properties properties; Lower Dataset<Row> set = sc .read() .option("partitionColumn", "foo") .option("numPartitions", "3") .option("lowerBound", 0) .option("upperBound", 30) .option("url", url) .option("dbtable", this.tableName) .option("driver","com.mysql.jdbc.Driver") .format("jdbc") .load();
-
predicates
Properties properties; Dataset<Row> set = sc .read() .jdbc( url, this.tableName, {"foo < 10", "foo BETWWEN 10 and 20", "foo > 20"}, properties )