Spark SQL实测 MySQL, MSSQL, Oracle "SELECT语法"

任何结构性的资料(ex:Json)在Spark SQL下,都可以透过
createOrReplaceTempView("view名称") 告知Spark SQL
你将资料注册成一个view,之后就可以用熟悉的SQL语法来检索资料!

scala> val task = spark.read.json("file:///data_toysrus.json")scala> task.craeteOrReplaceTempView("toysrus")

但是光资料库就各有各的山头,SQL语法当然也是!
今天就拿W3School贴的语法来实测看看Spark SQL的支援程度!
第一个登场的是 MySQL:

scala> val mysql = spark.sql("SELECT * FROM toysrus LIMIT 3")scala> mysql.show+----------+------------+----------+-------+-------------+---------+--------+|customerId|customerName|    date4T|  price|productAmount|productId|  time4T||        51|    aclindsa|2018-05-11|9506.21|            1|       68| 6:55 AM||        99|adamschwartz|2018-05-11|4107.59|            5|       86| 7:39 PM||        79|         ben|2018-05-11|2987.22|            7|       58|11:57 AM|+----------+------------+----------+-------+-------------+---------+--------+

看起来mysql是被Spark SQL认可接受的!

第二个登场的是 MSSQL:

scala> val mssql = spark.sql("SELECT TOP 3 * FROM toysrus")scala> mssql.showorg.apache.spark.sql.catalyst.parser.ParseException:... ...== SQL ==SELECT TOP 3 * FROM toysrus-----------^^^

TOP语法挂了,立马喷错!mssql挑战失败!

第三个登场的是 Oracle:

scala> val oracle = spark.sql("SELECT * FROM toysrus WHERE ROWNUM <= 3")scala> oracle.showorg.apache.spark.sql.AnalysisException: cannot resolve 'ROWNUM' given input columns: [... ...... ...

ROWNUM被判定为栏位,但实际Json资料本来就没ROWNUM这个属性!oracle挑战失败!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章