SparkSql简介
SparkSql主要用于处理结构化的数据以及Spark执行类sql的查询
SparkSql的数据源:SparkSql的数据源可以是JSON字符串,JDBC,HIVE,HDFS等
DataFrame
DataFrame也是一个分布式的数据容器,与RDD类似,也可以转换成RDD,DataFrame除了保存数据外,还保存数据的结构信息scheme,DataFrame底层封装的就是RDD,只不过是row的RDD
DataSet
1.DataSet是DataframeAPI的一个扩展,是Spark最新的数据抽象
2.DataSet支持编解码器,当需要访问非堆上的数据可以避免反序列化整个对象,提高了效率
3.样例类被用来在Dataset中定义数据的结构信息,样例类中每个属性的名称直接映射到DataSet中的字段名称
4.DataFrame是Dataset的特例,DataFrame = Dataset[Row],可以通过as方法将DataFrame转换为Dataset,Row是一个类型,跟Car,Person这些类型一样,所有的表结构信息都用Row来表示
5.DataSet是强类型,可以有DataSet[Car],DataSet[Person]
6.DataFrame只是知道字段,但是不知道字段类型,所以在执行这些操作的时候是没办法在编译的时候检查是否类型失败的
SparkSQL怎么来查询
在1.6版本中,SparkSQL有两种SQL查询起始点:一个叫SQLContext,用于Spark自己提供的SQL查询,一个叫HiveContext,用于连接Hive的查询
2.0以上的版本中,SparkSQ