与RRD的区别
1.DataFrame让spark具备了处理大规模结构化数据的能力,比rdd转化方式更加简单易用,并且获得了更高的计算性能
2. DataFrame支持sql查询
3.RDD是分布式的Java对象集合,对象内部结构不可知
3.DataFrame以RDD为基础的分布式数据集,提供了详细的结构信息
创建
spark.createDataFrame(...)
spark.read.json/csv/text
spark.read.format().load()
spark.
操作
df.show(...) :展示
df.collect() :小的df
df.take(...) : 展示前几行
df.select(...) :选择
df.filter(...) :过滤 df.filter("name like 'A%'").show()
df.groupBy(...) : 分组聚合
df.sort(...) : 排序
df.withColumnRenamed(...) : 重命名列
df.withColumn(...) :添加列
df.drop(...) : 删除列
df.rdd
df.toPandas
df.toDF
.printSchema() :打印模式
定义模式用 StructType、StructField
df.count() :行数
sql查询
sql 查询必须生成临时表
df.createGlobalTempView(...)
df.createTempView(...)
spark.sql(...)