sql >> データベース >  >> RDS >> Mysql

mysqlテーブルをsparkデータセットに変換することは、csvファイルからのものと比較して非常に遅いです

    この問題はStackOverflowで何度も取り上げられています:

    および外部ソース:

    繰り返しになりますが、デフォルトでは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
          )
      


    1. 列のすべての値をチェックするSQL

    2. SQLServerが予期しない週番号を返す

    3. OracleでORDERを使用してINSERT

    4. JSON_DEPTH()–MySQLでJSONドキュメントの最大深度を検索します