天天看点

数据融合演示: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

继续阅读