天天看點

資料融合示範: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/oracle@//192.168.2.16/xe”,

“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

S) emp”

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

繼續閱讀