Tôi tìm thấy điều này ở đây Di chuyển hàng loạt dữ liệu thông qua Spark SQL
Tham số dbname có thể là bất kỳ truy vấn nào được đặt trong dấu ngoặc đơn với bí danh. Vì vậy, trong trường hợp của tôi, tôi cần thực hiện điều này:
val query = """
(select dl.DialogLineID, dlwim.Sequence, wi.WordRootID from Dialog as d
join DialogLine as dl on dl.DialogID=d.DialogID
join DialogLineWordInstanceMatch as dlwim on dlwim.DialogLineID=dl.DialogLineID
join WordInstance as wi on wi.WordInstanceID=dlwim.WordInstanceID
join WordRoot as wr on wr.WordRootID=wi.WordRootID
where d.InSite=1 and dl.Active=1
limit 100) foo
"""
val df = sqlContext.format("jdbc").
option("url", "jdbc:mysql://localhost:3306/local_content").
option("driver", "com.mysql.jdbc.Driver").
option("useUnicode", "true").
option("continueBatchOnError","true").
option("useSSL", "false").
option("user", "root").
option("password", "").
option("dbtable",query).
load()
Đúng như dự đoán, việc tải từng bảng dưới dạng Khung dữ liệu của riêng nó và kết hợp chúng trong Spark rất kém hiệu quả.