資料融合演示:Spark平臺上實現不同型別的資料庫裡的表關聯查詢
下面演示Oracle資料庫的表dianpingPOISearchResult 和 Mysql 資料庫裡的表實現關聯查詢。
val oracleContext=new org.apache.spark.sql.SQLContext(sc)
//Now, you can run a query to Oracle by running a code in the below format.
val oracleQuery = “(select * from dianpingPOISearchResult) emp”
val oracleQueryDF = oracleContext.load(“jdbc”,
Map(“url” -> “jdbc:oracle:thin:system/
“dbtable” -> oracleQuery
)
)
oracleQueryDF.show(10)
oracleQueryDF.createOrReplaceTempView(“oracleTableDianPingPOI”)
val mysqlContext=new org.apache.spark.sql.SQLContext(sc)
//Now, you can run a query to Oracle by running a code in the below format.
val mysqlQuery = “(SELECT * FROM hive.dianping
val mysqlQueryDF=mysqlContext.read.format(“jdbc”).option(“url”, “jdbc:mysql://10.20.2.11:3306/hive”).option(“driver”, “com.mysql.jdbc.Driver”).option(“dbtable”, “dianping”).option(“user”, “root”).option(“password”, “你的密碼”).load()
mysqlQueryDF.show(10)
mysqlQueryDF.createOrReplaceTempView(“mysqlTableDianPingTelCode”)
val oracleMysqlDF = spark.sql(“SELECT * FROM oracleTableDianPingPOI O, mysqlTableDianPingTelCode M where O.cityTelCode=M.cityTelCode AND O.cityTelCode=‘010’”)
oracleMysqlDF.show(10)
//mysql 資料庫就可以和Oracle 資料庫進行關聯查詢.
//結果可以寫入 任意資料庫.
warning: there was one deprecation warning; re-run with -deprecation for details
oracleContext: org.apache.spark.sql.SQLContext = [email protected]
oracleQuery: String = (select * from dianpingPOISearchResult) emp
warning: there was one deprecation warning; re-run with -deprecation for details
oracleQueryDF: org.apache.spark.sql.DataFrame = [shopID: decimal(10,0), classCode: decimal(10,0) … 11 more fields]
±-----±--------±-----------±----------±-------±--------------±------------------±-----------±-------±--------±------±—±---------+
|shopID|classCode|subclassCode|cityTelCode|cityName| name| address| tel|latitude|longitude|channel|code|numbercode|
±-----±--------±-----------±----------±-------±--------------±------------------±-----------±-------±--------±------±—±---------+
|500215| 10| 1| 021| 上海| 廣靈閣八仙海鮮城(上南店)| 楊高南路2828號(成山路口)|021-50777000| null| null| null|null| null|
|500503| 10| 1| 021| 上海| 蘇先生海鮮漁莊(浦東店)| 東方路920號|021-58766363| null| null| null|null| null|
|509531| 10| 2| 010| 北京| 黎昌海鮮大酒樓(西八里莊店)| 阜成路81號|010-88130198| null| null| null|null| null|
|510103| 10| 2| 010| 北京| 南方悅萊鮑翅海鮮酒樓| 東四北大街七條|010-84018888| null| null| null|null| null|
|512277| 10| 2| 010| 北京|剛記廣州海鮮大排檔(菜戶營店)| 菜戶營東街362號|010-63456666| null| null| null|null| null|
|512828| 10| 2| 010| 北京| 鼓浪嶼海鮮大酒樓| 上地創業路17號金輝科技大廈2樓|010-62977799| null| null| null|null| null|
|513011| 10| 2| 010| 北京| 倪氏海鮮大酒店(海泰店)| 北四環中路229號海泰大廈1-5樓|010-82885077| null| null| null|null| null|
|513033| 10| 2| 010| 北京| 唐宮海鮮舫(好苑店)|建國門內大街17號好苑建國商務酒店1樓|010-65131288| null| null| null|null| null|
|516737| 10| 4| 020| 廣州| 稻穗香海鮮酒家| 林和西路161號|020-61300888| null| null| null|null| null|
|517267| 10| 4| 020| 廣州| 茶山莊海鮮野味酒家| 白雲大道北54號|020-36242339| null| null| null|null| null|
±-----±--------±-----------±----------±-------±--------------±------------------±-----------±-------±--------±------±—±---------+
only showing top 10 rows
warning: there was one deprecation warning; re-run with -deprecation for details
mysqlContext: org.apache.spark.sql.SQLContext = [email protected]
mysqlQuery: String = (SELECT * FROM hive.dianping
S) emp
mysqlQueryDF: org.apache.spark.sql.DataFrame = [citytelcode: string, cityname: string]
±----------±-------+
|citytelcode|cityname|
±----------±-------+
| 010| 北京|
| 020| 廣州|
±----------±-------+
oracleMysqlDF: org.apache.spark.sql.DataFrame = [shopID: decimal(10,0), classCode: decimal(10,0) … 13 more fields]
±-----±--------±-----------±----------±-------±--------------±------------------±-----------±-------±--------±------±—±---------±----------±-------+
|shopID|classCode|subclassCode|cityTelCode|cityName| name| address| tel|latitude|longitude|channel|code|numbercode|citytelcode|cityname|
±-----±--------±-----------±----------±-------±--------------±------------------±-----------±-------±--------±------±—±---------±----------±-------+
|509531| 10| 2| 010| 北京| 黎昌海鮮大酒樓(西八里莊店)| 阜成路81號|010-88130198| null| null| null|null| null| 010| 北京|
|510103| 10| 2| 010| 北京| 南方悅萊鮑翅海鮮酒樓| 東四北大街七條|010-84018888| null| null| null|null| null| 010| 北京|
|512277| 10| 2| 010| 北京|剛記廣州海鮮大排檔(菜戶營店)| 菜戶營東街362號|010-63456666| null| null| null|null| null| 010| 北京|
|512828| 10| 2| 010| 北京| 鼓浪嶼海鮮大酒樓| 上地創業路17號金輝科技大廈2樓|010-62977799| null| null| null|null| null| 010| 北京|
|513011| 10| 2| 010| 北京| 倪氏海鮮大酒店(海泰店)| 北四環中路229號海泰大廈1-5樓|010-82885077| null| null| null|null| null| 010| 北京|
|513033| 10| 2| 010| 北京| 唐宮海鮮舫(好苑店)|建國門內大街17號好苑建國商務酒店1樓|010-65131288| null| null| null|null| null| 010| 北京|
|562314| 10| 2| 010| 北京| 新港半島海鮮酒家| 地安門西大街乙181號|010-83229292| null| null| null|null| null| 010| 北京|
|562822| 10| 2| 010| 北京| 志欣大連海鮮農家菜| 萬豐路|010-63851688| null| null| null|null| null| 010| 北京|
|562823| 10| 2| 010| 北京| 君爵湘都海鮮酒樓| 萬壽路西街2號寰島博雅大酒店2樓|010-68286060| null| null| null|null| null| 010| 北京|
|562839| 10| 2| 010| 北京| 世寧東海海鮮酒家| 學院路35號北航科技園東門1-2樓|010-82338888| null| null| null|null| null| 010| 北京|
±-----±--------±-----------±----------±-------±--------------±------------------±-----------±-------±--------±------±—±---------±----------±-------+
only showing top 10 rows