DataFrame Spark平台的分布式弹性数据集
DataFrame以 RDD为基础的分布式数据集, 是Row对象的集合
DataSet是 DataFrame的一个特例, 强类型数据集
DF 对 RDD的优势:
DF提供数据的结构信息
DF定制化内存管理, 数据存放于JVM堆外内存
DF先转换为逻辑计划在执行,对任何语言执行效率一样
DF提供更丰富API
DataSet 对比DataFrame优点:
具备DF优点
Api面向对象
#创建DataFrame方法: 读文件或者 RDD转换为DF sparkSession.read.json() sparkSession.read.csv() #RDD转化为DF #通过自定义的case class object MyProject{ case class Person(name:String, age:Int) #两个列name和age def main(args: Array[String]): Unit={ val sparkSession = SparkSession .builder() .master(master="local") #本地运行 .getOrCreate() val sparkContext = sparkSession.sparkContext val rdd = sparkContext.textFile("") val rowRDD = rdd.map(_.split(" ")) #每一行空格切割 .map(x =>Person(x(0),x(1).toInt)) #rdd和caseClass关联 #执行toDF()方法将RDD转换为DF import sparkSession.implicits._ val df = rowRDD.toDF() df.show() sparkSession.stop() } } #通过自定义schema #val rdd后开始 val schemaField = "name, age" val schemaString = schemaField.split(",") val schema = StructType( List( StructField(schemaString(0).StringType, nullable=true), StructField(schemaString(1).IntegerType, nullable=true) ) ) #生成Row类型参数RDD val rowRDD = rdd.map(_.split(" ")) .map(x =>Row(x(0),x(1).toInt)) val df = sparkSession.createDataFrame(rowRDD,schema) #转换成df
#DataFrame转换为RDD val rdd = df.rdd #创建Dataset: #df转化为dataset import sparkSession.implicits_ val ds = df.as[Person] #因为Row对象是Person对象 #rdd转换为dataset import sparkSession.implicits_ val ds = sparkSession.createDataset(rdd) ##RDD和datatset toDS() rdd->Dataset rdd() Dataset->rdd ##Dataset和DataFrame toDF() Dataset->DataFrame as[ElementTyle] Dataframe->dataset
Spark SQL 逻辑计划- 物理计划 -优化
Spark SQL 分布式SQL引擎
底层依赖RDD, 处理结构化数据的一个模块
入口:SparkSession (2.0之后)
//Scala 不需要hive则不需要hivesupport val spark = SparkSession.builder().enableHiveSupport().getOrCreate
Spark SQL和hive区别:
Hive基于Mapreduce框架实现SQL操作
Spark SQL拥有Catalyst优化器, 支持不同数据源
Spark SQL没有自己的存储, Hive集成HDFS
SparkSQL没有自己的元数据管理,要依赖Hive
Spark SQL 访问 Hive 仓库:
1. SPARK_HOME/conf 下添加 hive-site.xml
2. 启动 thriftserver服务 : SPARK_HOME/sbin/start-thriftserver.sh
66666666666666
sparksql和hive对比
sparksql有catalyst优化器
sparksql 如何访问hive:hive-site.xml放到SPARK_HOME/conf
然后/$SPARK_HOME/sbin/start-thriftserver.sh