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

Použijte SparkSession.sql() s JDBC

Spark umí číst a pište data do/z relačních databází pomocí zdroje dat JDBC (jako jste to udělali ve svém prvním příkladu kódu).

Spark navíc (a zcela samostatně) umožňuje pomocí SQL dotazovat views které byly vytvořeny přes data, která již byla načtena do DataFrame z nějakého zdroje. Například:

val df = Seq(1,2,3).toDF("a") // could be any DF, loaded from file/JDBC/memory...
df.createOrReplaceTempView("my_spark_table")
spark.sql("select a from my_spark_table").show()

Pomocí SparkSession.sql lze dotazovat pouze „tabulky“ (nazývané od verze Spark 2.0.0) vytvořené tímto způsobem. .

Pokud jsou vaše data uložena v relační databázi, Spark je bude muset nejprve přečíst odtamtud a teprve poté bude schopen provést jakýkoli distribuovaný výpočet na načtené kopii. Sečteno a podtrženo – data z tabulky můžeme načíst pomocí read , vytvořte dočasné zobrazení a poté na něj zadejte dotaz:

ss.read
  .format("jdbc")
  .option("url", "jdbc:mysql://127.0.0.1/database_name")
  .option("dbtable", "schema.tablename")
  .option("user", "username")
  .option("password", "password")
  .load()
  .createOrReplaceTempView("my_spark_table")

// and then you can query the view:
val df = ss.sql("select * from my_spark_table where ... ")



  1. Úvahy o integritě dat a výkonu v semisynchronní replikaci MySQL

  2. Je možné změnit přirozené pořadí sloupců v Postgresu?

  3. Pomozte nám modernizovat IDE v MS Access – váš hlas se počítá!

  4. mysql_result() očekává, že parametr 1 bude zdrojem, daný booleovský