1.DataFrame
1)不是Spark SQL提出的,而是早期在R,Pandas中产生的
2)DataFrame是一个以列(列名、列的类型、列值)的形式构成的分布式的数据集,按照列赋予不同的名称
3)是关系型数据库中的一张表或者是R/Python中的一个dataframe概念,但是具有更多优化
2.DataFrame对比RDD(DataFrame能够具有更多信息)
RDD:
java/scala ==> jvm
python ==> python runtime
DataFrame:
java/scala/python ==> Logic Plan 不同语言编程效果一样
3.DataFrame基本API常用操作
1)peopleDF.printSchema 打印Schema信息
2)peopleDF.show(100) 输出前100条记录
3)peopleDF.select("name").show() 只查询name字段的记录
peopleDF.select(peopleDF.col("name"),(peopleDF.col("age")+10).as("age2")).show() 查询某几列所有的数据,并且把数据都+10
4)peopleDF.filter(peopleDF.col("age">19).show() 对某一列的值进行过滤
studentDF.filter("substring(name,0,1)='M'").show 通过SubString函数将首字母为M的名字展示出来
5)peopleDF.groupBy("age").count().show() 根据某一列进行分组再进行聚合操作
6)peopleDF.sort(peopleDF("name").asc,peopleDF("id").desc).show 排序 按名字升序,按id降序
7)peopleDF.join(peopleDF2,peopleDF.col("id")===peopleDF2.col("id")).show join表连接操作
4.DataFrame和RDD的互操作
1)使用反射机制,将RDD转换为DataFrame,使用反射
5.DataFrame API操作案例实战(学生信息统计案例)
6.Dataset概述及使用
1)Dataset是一个分布式的数据集,强类型,支持lambda公式,提供优化引擎,可以在Java和Scala里面使用
2)spark如何解析csv文件
val df = spark.read.option("header","true").option("inferScheme","true").csv(path)
df.show()
3)导入隐式转换:import spark.implicits._
4)Dataset概述:静态类型和运行时类型安全,nengg