sql >> Databasteknik >  >> RDS >> Mysql

Använd SparkSession.sql() med JDBC

Spark kan läsa och skriv data till/från relationsdatabaser med JDBC-datakällan (som du gjorde i ditt första kodexempel).

Dessutom (och helt separat) tillåter spark att använda SQL för att fråga vyer som skapades över data som redan laddats in i en DataFrame från någon källa. Till exempel:

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()

Endast "tabeller" (kallade vyer, från och med Spark 2.0.0) som skapats på detta sätt kan efterfrågas med SparkSession.sql .

Om din data lagras i en relationsdatabas måste Spark läsa den därifrån först, och först då skulle den kunna utföra en distribuerad beräkning på den laddade kopian. Summa summarum - vi kan ladda data från tabellen med read , skapa en tillfällig vy och fråga den sedan:

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. Heroku Postgres:psql:FATAL:ingen pg_hba.conf-post för värd

  2. Generera PL/SQL-procedur online för att importera data i Oracle Table

  3. Söka i en Oracle-databas efter tabeller med specifika kolumnnamn?

  4. Hur man delar upp mySQL-information för att visa i HTML-kolumner