sql >> Database teknologi >  >> RDS >> Mysql

Konvertering af mysql-tabel til spark-datasæt er meget langsom sammenlignet med samme fra csv-fil

Dette problem er blevet dækket flere gange på StackOverflow:

og i eksterne kilder:

så bare for at gentage - som standard DataFrameReader.jdbc distribuerer ikke data eller læser. Den bruger enkelt tråd, enkelt exectuor.

For at distribuere læser:

  • brug intervaller med 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. Minimum tilskud påkrævet af mysqldump for at dumpe et fuldt skema? (TRIGGERE mangler!!)

  2. Få fat i 190.000 rækker fra MySQL ved hjælp af PHP, tom side? Hukommelse eller buffer?

  3. mysql_num_rows():det leverede argument er ikke en gyldig MySQL resultatressource

  4. er php sortering bedre end mysql rækkefølge efter?