sql >> Databáze >  >> RDS >> Mysql

Převod tabulky mysql na datovou sadu Spark je velmi pomalý ve srovnání se stejným souborem csv

Tento problém byl na StackOverflow řešen několikrát:

a v externích zdrojích:

takže jen pro zopakování - ve výchozím nastavení DataFrameReader.jdbc nedistribuuje data ani nečte. Používá jedno vlákno, jeden exekutor.

Chcete-li distribuovat čtení:

  • použijte rozsahy s 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. Jak optimalizovat ORDER BY pro vypočítaný sloupec v MASSIVE MySQL tabulce

  2. 5 způsobů, jak najít řádky, které obsahují velká písmena na serveru SQL

  3. Kde mohu získat aplikaci pro chatovací místnost PHP / MYSQL

  4. Porušení omezení integrity:1052 sloupec 'id' tam, kde je klauzule nejednoznačná