在前面我们介绍了spark sql其实操作的主要是DataFrame,那么对于DataFrame有哪些API供操作呢?下面列举一下:
序号 | 函数 | 含义 | 示例 |
1 | select | 查询数据 | val usersDF = sc.parallelize(users,1).toDF() usersDF.select("name").show() |
2 | drop | 删除某列 | val usersDF = sc.parallelize(users,1).toDF() usersDF.drop("name").show() |
3 | where/filter | 过滤数据 | val usersDF = sc.parallelize(users,1).toDF() usersDF.where("age > 15").show() usersDF.filter("name = \"张三\"").show() |
4 | limit | 限制返回数量 | val usersDF = sc.parallelize(users,1).toDF() usersDF.where("age > 10").limit(1).show() |
5 | withColumnRenamed | 修改列名 | val usersDF = sc.parallelize(users,1).toDF() usersDF.withColumnRenamed("name","name1").show() |
6 | withColumn | 增加一个新的列(一般不建议使用这个函数,性能太差,建议从新组合rdd,使用select创建一个新表) | import org.apache.spark.sql.functions.lit val usersDF = sc.parallelize(users,1).toDF() usersDF.withColumn("birthday",lit("1970-01-01")).show() |
7 | groupBy | 数据分组 | val usersDF = sc.parallelize(users,1).toDF() usersDF.select().groupBy("birthday").max("age").show() |
8 | orderBy/sort | 排序 | val usersDF = sc.parallelize(users,1).toDF() usersDF.select().orderBy("age").show() usersDF.select().sort("age").show() |
备注:
1、使用withColumn增加一列的函数性能较差,不建议使用。
2、在groupBy里面不能直接返回,需要在groupBy的对象后面使用如下函数:count(求和)、mean(求均值)、max(求最大值)、min(求最小值)、sum(求和)、avg(求平均值)、agg(可以进行多个汇总计算)、pivot(执行列转换)。
上面介绍的函数都是tansformation的操作,下面再介绍下action的操作
序号 | 函数 | 备注 |
1 | show | 显示result结果 |
2 | count | 统计数量 |
3 | first | 返回第一条数据 |
4 | head(n) | 返回前n条数据 |
5 | take(n) | 返回前n条数据 |
6 | takeAsList(n) | 返回前n条数据,结构为list |
7 | collect | 返回所有的数据 |
8 | collectAsList | 返回所有的数据,结构为list |
还没有评论,来说两句吧...