Sparkは読む および書き込み JDBCデータソースを使用したリレーショナルデータベースとの間のデータ(最初のコード例で行ったように)。
さらに(完全に個別に)、sparkではSQLを使用してビューをクエリできます。 あるソースからDataFrameにすでにロードされているデータに対して作成されたものです。例:
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()
SparkSession.sql
を使用してクエリできるのは、この方法で作成された「テーブル」(Spark 2.0.0ではビューと呼ばれる)のみです。 。
データがリレーショナルデータベースに保存されている場合、Sparkは最初にそこからデータを読み取る必要があり、その後、ロードされたコピーに対して分散計算を実行できるようになります。結論-read
を使用してテーブルからデータをロードできます 、一時ビューを作成してから、クエリを実行します:
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 ... ")