Dalam Apache Spark, mengambil data daripada pangkalan data luaran selalunya dilakukan dengan memuatkan keseluruhan jadual menggunakan DataFrameReader . Walau bagaimanapun, kadangkala adalah wajar untuk mengambil hanya hasil pertanyaan tertentu.
Dalam Apache Spark 2.0.0, adalah mungkin untuk menentukan subkueri sebagai argumen dbtable apabila membaca daripada sumber JDBC. Ini membolehkan anda mengambil hasil pertanyaan khusus dan bukannya keseluruhan jadual.
Pertimbangkan coretan kod berikut yang ditulis dalam Pyspark:
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", "(SELECT foo, bar FROM schema.tablename) AS tmp")\ .option("user", "username")\ .option("password", "password")\ .load()
Dalam contoh ini, bukannya mengambil keseluruhan jadual schema.tablename, kod melaksanakan subquery (SELECT foo, bar FROM schema.tablename) AS tmp dan menyimpan keputusan dalam tmp jadual sementara. DataFrameReader kemudiannya memuatkan data daripada tmp jadual sementara ke dalam DataFrame df.
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Keputusan Pertanyaan Khusus daripada Pangkalan Data Luar dalam Apache Spark 2.0.0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!