ホームページ >データベース >mysql チュートリアル >PySpark の JDBC を使用して外部データベースから特定のクエリ結果をフェッチするにはどうすればよいですか?

PySpark の JDBC を使用して外部データベースから特定のクエリ結果をフェッチするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-30 07:34:15436ブラウズ

How Can I Fetch Specific Query Results from an External Database Using PySpark's 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。