基于Spark1.3.0的Spark sql三个核心部分
基于Spark1.3.0的Spark sql三个核心部分:
1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet)
2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标准的数据库连接(JDBC/ODBC)连接spark,比如一个商业智能的工具Tableau
3.当你通过使用spark程序,spark sql提供丰富又智能的SQL或者regular Python/Java/Scala code,包括 join RDDS ,SQL tables ,使用SQL自定义用户函数
以下资料参考自:http://blog.csdn.net/stark_summer/article/details/45843803
在Spark中提供了一个JdbcRDD类,该RDD就是读取JDBC中的数据并转换成RDD,之后我们就可以
对该RDD进行各种操作。我们先看看该类:
JdbcRDD[T:ClassTag](sc:SparkContext,getConnection:()=>Connection,
sql:String,lowerBound:Long,upperBound:Long,numPartitions:Int,
mapRow:(ResultSet)=> T=JdbcRDD.resultSetToObjectArray _)
1、getConnection 返回一个已经打开的结构化数据库连接,JdbcRDD会自动维护关闭。
2、sql:是查询语句,次查询已经必须包含两处占位符?来作为分割数据库ResultSet的参数,
例如:"select title,author from books where ?<=id and id<=?"
3.lowerBound,upperBound,numPartitions:分别为第一、第二占位符,partition的个数。例如:给出lowebound 1,upperbound 20 numpartitions 2,则查询分别为(1,10,)与(11,20)
4.mapRow是转换函数,将返回的ResultSet转换成RDD需要的单行数据,此处可以选择Array或其他,也可以是自定义的case class.默认的是讲ResultSet转换成一个Object数组。