sql >> データベース >  >> RDS >> Mysql

JDBCでSparkSession.sql()を使用する

    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 ... ")
    



    1. クエリ、ストアドプロシージャ、およびトリガー用のSQLServerパフォーマンスインジケーターの実装

    2. 12cデータ編集

    3. PHPとMYSQL:カテゴリにgroupbyを使用

    4. MySQL Galeraノードが起動していません(エラー'WSREP:[...]:60:プライマリビューに到達できませんでした:60(操作がタイムアウトしました)')