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

Brug SparkSession.sql() med JDBC

Spark kan læse og skriv data til/fra relationelle databaser ved hjælp af JDBC-datakilden (som du gjorde i dit første kodeeksempel).

Derudover (og helt separat) tillader spark at bruge SQL til at forespørge på visninger der blev oprettet over data, der allerede var indlæst i en DataFrame fra en eller anden kilde. For eksempel:

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

Kun "tabeller" (kaldet visninger fra Spark 2.0.0) oprettet på denne måde kan forespørges ved hjælp af SparkSession.sql .

Hvis dine data er gemt i en relationsdatabase, skal Spark først læse dem derfra, og først derefter vil den være i stand til at udføre enhver distribueret beregning på den indlæste kopi. Nederste linje - vi kan indlæse data fra tabellen ved hjælp af read , opret en midlertidig visning, og forespørg derefter:

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. PostgreSQL CASE ... SLUT med flere betingelser

  2. Installation af RAC til en database med datafiler

  3. MySQL-spørgsmål - Unik Key Fungerer ikke korrekt, eller misforstår jeg?

  4. Mysql:Sådan får du hver række, der har mere end et vist antal decimaler efter prikken