データ融合デモ: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-5077000|null|null|null|null|null|500503|10|1|021|上海|蘇さん海鮮漁荘(浦東店)|東方路920号|021-5876633|null|null|null|null|null|509531|10|2|010|北京|黎昌海鮮大酒楼(西八里荘店)|阜成路81号|010-88130198|null|null|null|null|null|510103|10|2|010|北京|南方悦莱鲍翅海鮮酒楼|東四北大街七条|010-8401888|null|null|null|null|null|512277|10|010|北京|剛記広州海鮮屋台(菜戸営店)|菜戸営東街362号|010-6345666|null|null|null|null|null|512828|10|2|010|北京|鼓浪嶼海鮮大酒楼|上地創業路17号金輝科技ビル2階|010-629777799|null|null|null|null|null|null|513011|10|10|2|010|北京|倪氏海鮮大酒店(海泰店)|北四環中路229号海泰ビル1-5階|010-82885077|null|null|null|null|513033|10|2|010|北京|唐宮海鮮舫(好苑店)|建国門内通り17号好苑建国ビジネスホテル1階|010-65131288|null|null|null|null|516737|10|4|020|広州|稲穂香海鮮酒家|林和西路161号|020-63300888|null|null|null|null|null|null|null|null|null|517267|10|4|020|広州|茶山荘海鮮野味酒家|白雲大道北54号|020-36242339|null|null|null|null|null|null|null|null|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-8401888|null|null|null|null|null|null|null|0100|北京|512277|10|2|010|北京|剛記広州海鮮屋台(菜戸営店)|菜戸営東街362号|010-6345666|null|null|null|null|010|北京|512828|10|2|010|北京|鼓浪嶼海鮮大酒楼|上地創業路17号金輝科技ビル2階|010-6297799|null|null|null|null|null|010|北京|513011|10|2|010|北京|倪氏海鮮大酒店(海泰店)|北四環中路229号海泰ビル1-5階|010-8285077|null|null|null|null|010|北京|513033|10|2|010|北京|唐宮海鮮舫(好苑店)|建国門内通り17号好苑建国ビジネスホテル1階|010-65131288|null|null|null|null|010|北京|562314|10|2|010|北京|新港半島海鮮酒家|地安門西通り乙181号|010-832292|null|null|null|null|010|北京|562822|10|2|010|北京|志欣大連海鮮農家料理|万豊路|010-63851688|null|null|null|null|null|null|null|null|null|nullll|null|010|北京|562823|10|2|010|北京|君爵湘都海鮮酒楼|万寿路西街2号寰島博雅大酒店2階|010-68280600|null|null|null|null|null|null|010|北京|562839|10|2|010|北京|世寧東海海鮮酒家|学院路35号北航科技園東門1-2階|010-8238888|null|null|null|null|null|null|null|010|北京|±-----------±----------±-------±--------------±------------------±-----------±-------±--------±------±—±---------±----------±-------+ only showing top 10 rows