SparkSQL中DataFrame Operations操作(select、filter、groupBy、count)

本文通过具体实例介绍了如何使用 Spark SQL 进行数据操作,包括 DataFrame 的创建、查询、过滤及分组等基本操作。

注意:此处用的spark version 1.6.0,版本不同,SparkSQL写代码时不太一样,比如要查询所有用户,并且使每一位用户年龄增加1.

spark 2.1.0写法为:

df.select($"name", $"age" + 1).show()
spark 1.6.0写法为:
df.select(df("name"),df("age")+1).show()

1.创建DataFrame

val df = new SQLContext(sc).read.json("E:\\spark-2.1.0\\spark-2.1.0\\examples\\src\\main\\resources\\people.json")

2.查看DataFrame内容

df.show()

结果如图所示:


3.查看Schema

df.printSchema()


4.Select操作

4.1 只查看姓名

df.select("name").show()

4.2 查看所有姓名、年龄

df.select("name","age").show()

4.3 查看所有姓名,同时使每个人年龄增加1

df.select(df("name"),df("age")+1).show() 

注意:不能写成这样

df.select("name","age"+1).show()
否则会报如下错误
Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve 'age1' given input columns age, name;

5.Filter操作

查询年龄大于21的用户

df.filter(df("age")>21).show()


6.GroupBy操作

按年龄分组查看用户

df.groupBy("age").count().show()

7.完整代码

/**
  * Created by RiverCode on 2017/3/6.
  */
object SparkSQLExample {
  def main(args: Array[String]) {

    val sparkConf = new SparkConf().setMaster("local").setAppName("spark SQL basic example")

    val sc = new SparkContext(sparkConf)

    val sqlContext = new SQLContext(sc)

    val df = new SQLContext(sc).read.json("E:\\spark-2.1.0\\spark-2.1.0\\examples\\src\\main\\resources\\people.json")

    df.show()

    df.printSchema()

    df.select("name").show()

    df.select("name","age").show() // 可以
//  df.select("name","age"+1).show() // 不可以cannot resolve 'age1' given input columns age, name;
//  df.select($"name",$"age"+1)  // spark 2.1.0 这样写
    df.select(df("name"),df("age")+1).show()  // spark 1.6.3

    df.filter(df("age")>21).show()

    df.groupBy("age").count().show()
   
  }
}

8.相关文章链接

Spark中DataFrame的schema讲解:spark中DataFrame的schema讲解

http://blog.youkuaiyun.com/rivercode/article/details/60604327

spark创建DataFrame:spark创建DataFrame

http://blog.youkuaiyun.com/rivercode/article/details/60596079









Spark是一个快速、通用、可扩展的大数据处理引擎,广泛应用于数据处理、机器学习和图计算等领域。Spark的基本操作主要包括以下几个方面: 1. **初始化SparkSession**: SparkSession是Spark 2.0引入的新概念,是Spark SQL的入口点。通过SparkSession可以创建DataFrame和执行SQL查询。 ```python from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Basic Operations") \ .getOrCreate() ``` 2. **创建DataFrame**: DataFrame是一个分布式的按列命名的数据集,类似于关系型数据库中的表。 ```python data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)] df = spark.createDataFrame(data, ["Name", "Age"]) ``` 3. **查看DataFrame**: 可以使用`show()`方法查看DataFrame的内容。 ```python df.show() ``` 4. **选择列**: 使用`select()`方法选择特定的列。 ```python df.select("Name").show() ``` 5. **过滤数据**: 使用`filter()`或`where()`方法过滤数据。 ```python df.filter(df["Age"] > 30).show() ``` 6. **分组和聚合**: 使用`groupBy()`方法进行分组,并使用聚合函数进行计算。 ```python df.groupBy("Age").count().show() ``` 7. **排序**: 使用`orderBy()`方法对数据进行排序。 ```python df.orderBy("Age").show() ``` 8. **执行SQL查询**: 将DataFrame注册为临时视图,并使用`sql()`方法执行SQL查询。 ```python df.createOrReplaceTempView("people") spark.sql("SELECT * FROM people WHERE Age > 30").show() ``` 9. **关闭SparkSession**: 使用完毕后,关闭SparkSession以释放资源。 ```python spark.stop() ``` 通过这些基本操作,可以对数据进行各种处理和分析。Spark的强大之处在于其分布式计算能力和丰富的API,使得大规模数据处理变得高效和便捷。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值