基于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数组。

原文地址:https://www.cnblogs.com/jingblogs/p/5531560.html