ホームページ >データベース >mysql チュートリアル >PySpark の JDBC を使用して外部データベースから特定のクエリ結果をフェッチするにはどうすればよいですか?
Apache Spark 2.0.0 の外部データベースから特定のクエリ結果を取得する
PySpark を使用して Apache Spark 2.0.0 の外部データベースを操作する場合、ユーザーはテーブル全体を取得するのではなく、特定のクエリからデータをフェッチしたい場合があります。これにより、パフォーマンスが向上し、データ転送が削減されます。
質問:
次の PySpark コードでは、df データフレームは「schema.tablename」という名前のデータベース テーブルからロードされます。 。代わりにカスタム クエリの結果セットからデータをフェッチするようにコードを変更するにはどうすればよいですか?
from pyspark.sql import SparkSession spark = SparkSession\ .builder\ .appName("spark play")\ .getOrCreate() df = spark.read\ .format("jdbc")\ .option("url", "jdbc:mysql://localhost:port")\ .option("dbtable", "schema.tablename")\ .option("user", "username")\ .option("password", "password")\ .load()
回答:
カスタム クエリの結果セットをフェッチするにはクエリを実行するには、クエリを Spark DataFrameReader のオプションの「dbtable」引数として指定します。クエリは括弧で囲み、一時テーブル名にエイリアスする必要があります。
... .option("dbtable", "(SELECT foo, bar FROM schema.tablename) AS tmp") ...
サブクエリを "dbtable" 引数として渡すことにより、Spark はクエリを実行し、結果のデータを DataFrame にロードします。これにより、ユーザーはテーブル全体をフェッチするオーバーヘッドなしで、外部データベースから特定のデータを取得できるようになります。
以上がPySpark の JDBC を使用して外部データベースから特定のクエリ結果をフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。