数据融合演示: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 = org.apache.spark.sql.SQLContext@b983170
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 = org.apache.spark.sql.SQLContext@72987159
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

猜你喜欢

转载自blog.csdn.net/happyfreeangel/article/details/84781684