spark3.0-python教程-SparkSQL:SQL方式第一个例子

说明

通过 SparkSQL,读取 HDFS 上的文件,并使用 SQL 查询分析

准备数据

创建文件 studentInfo.txt

内容如下:

1,李雷,20,男,1.82
2,韩梅梅,21,女,1.65
3,lucy,22,女,1.71
4,lili,22,女,1.71
5,张三,24,男,1.78

上传到 HDFS 上任意目录均可

案例1

  1. 使用 SparkSession 对象读取文件
  2. 给文件指定列名
  3. 打印 字段类型Schema
import findspark
findspark.init()

from pyspark.sql import  SparkSession

# 创建 SparkSession 对象
spark = SparkSession.builder.\
    appName("test").\
    master("local[*]").\
    getOrCreate()

# 读取 hdfs 上的文件,注意:hdfs不能大写
df = spark.read.csv("hdfs:///data/studentInfo.txt",sep=",",header=False)\
    .toDF("id","name","age","gender","height") # 设置列名,否则用默认列名,不方便查询

print("----Schema-----")
df.printSchema() # 打印 字段类型Schema
spark.stop()

案例2 - 条件查询

  1. 先创建临时视图
  2. 执行 select 语句
import findspark
findspark.init()

from pyspark.sql import  SparkSession

# 创建 SparkSession 对象
spark = SparkSession.builder.\
    appName("test").\
    master("local[*]").\
    getOrCreate()

# 读取 hdfs 上的文件,注意:hdfs不能大写
df = spark.read.csv("hdfs:///data/studentInfo.txt",sep=",",header=False)\
    .toDF("id","name","age","gender","height") # 设置列名,否则用默认列名,不方便查询

#print("----Schema-----")
#df.printSchema() # 打印 字段类型Schema

df.createOrReplaceTempView("student")
df2 = spark.sql("select name,age,gender,height from student where gender='男'")
df2.show()
spark.stop()

案例2 - 统计

关键代码:

df3 = spark.sql("select avg(age) from student ")
df3.show()

特点:执行速度非常快,比 Hive快很多


原文出处:/show_1IX3FIFEcfVy.html