Spark SQL DataFrame 实践 { "id":1 ,"name":" Ella","age":36 } { "id":2,"name":"Bob","age":29 } { "id":3 ,"name":"Jack","age":29 } { "id":4 ,"name":"Jim","age":28 } { "id":5 ,"name":"Damon",”age”:40 } { "id":5 ,"name":"Damon",”age”:40 } 将上面 JSON 格式数据复制到 Linux 系统中,并保存命名为 employee.json。为 employee.json 创建 DataFrame,并写出 Scala 语句完成下列操作: 1) 查询所有数据,并去除重复的数据; 2) 查询所有数据,打印时去除 id 字段; 3) 筛选出 age<30 的记录; 4) 将数据按 name 升序排列; 5) 取出前 3 行数据; 6) 查询所有记录的 name 列,并为其取别名为 username; 7) 查询年龄 age 的平均值; 8) 查询年龄 age 的最小值。
时间: 2023-06-28 08:14:15 浏览: 135
好的,我会为您解答关于 Spark SQL DataFrame 的问题。下面是针对您的问题的解答:
1. 创建 DataFrame 并去除重复数据
您可以使用以下代码创建 DataFrame 并去除重复数据:
```scala
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder()
.appName("DataFrame Practice")
.master("local[*]")
.getOrCreate()
val df = spark.read.json("path/to/employee.json").distinct()
df.show()
```
请将 `path/to/employee.json` 替换为您的 JSON 数据路径。
2. 查询所有数据并去除 id 字段
您可以使用以下代码查询所有数据并去除 id 字段:
```scala
df.select("name", "age").show()
```
3. 筛选出 age<30 的记录
您可以使用以下代码筛选出 age<30 的记录:
```scala
df.filter("age < 30").show()
```
4. 将数据按 name 升序排列
您可以使用以下代码将数据按 name 升序排列:
```scala
df.orderBy("name").show()
```
5. 取出前 3 行数据
您可以使用以下代码取出前 3 行数据:
```scala
df.limit(3).show()
```
6. 查询所有记录的 name 列并为其取别名为 username
您可以使用以下代码查询所有记录的 name 列并为其取别名为 username:
```scala
df.selectExpr("name as username").show()
```
7. 查询年龄 age 的平均值
您可以使用以下代码查询年龄 age 的平均值:
```scala
import org.apache.spark.sql.functions.avg
df.select(avg("age")).show()
```
8. 查询年龄 age 的最小值
您可以使用以下代码查询年龄 age 的最小值:
```scala
import org.apache.spark.sql.functions.min
df.select(min("age")).show()
```
希望这些代码可以帮助到您。
阅读全文