Saya menemukan ini di sini Migrasi data massal melalui Spark SQL
Parameter dbname dapat berupa kueri apa pun yang dibungkus dalam tanda kurung dengan alias. Jadi dalam kasus saya, saya perlu melakukan ini:
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()
Seperti yang diharapkan, memuat setiap tabel sebagai Dataframe-nya sendiri dan menggabungkannya di Spark sangat tidak efisien.