Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng SparkSession.sql () với JDBC

Spark có thể đọc viết dữ liệu đến / từ cơ sở dữ liệu quan hệ bằng cách sử dụng nguồn dữ liệu JDBC (giống như bạn đã làm trong ví dụ mã đầu tiên của mình).

Ngoài ra (và hoàn toàn riêng biệt), spark cho phép sử dụng SQL để truy vấn lượt xem được tạo trên dữ liệu đã được tải vào DataFrame từ một số nguồn. Ví dụ:

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()

Chỉ các "bảng" (được gọi là chế độ xem, kể từ Spark 2.0.0) được tạo theo cách này mới có thể được truy vấn bằng cách sử dụng SparkSession.sql .

Nếu dữ liệu của bạn được lưu trữ trong cơ sở dữ liệu quan hệ, Spark sẽ phải đọc nó từ đó trước tiên và chỉ sau đó nó mới có thể thực thi bất kỳ phép tính phân tán nào trên bản sao đã tải. Điểm mấu chốt - chúng ta có thể tải dữ liệu từ bảng bằng cách sử dụng read , tạo một chế độ xem tạm thời, rồi truy vấn nó:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để truy xuất phiên bản của mục được thêm vào lần cuối

  2. Làm cách nào để bạn nối một ký tự xuống dòng với một giá trị trong MySQL?

  3. Giá trị giảm trong mysql nhưng không âm

  4. Tại sao dữ liệu tôi tải lên bị đổi tên và dữ liệu tương ứng được thêm vào các hàng khác nhau?

  5. Câu hỏi hiệu suất chọn phụ MySQL?