spark3.0-python教程-SparkSQL:DataFrame案例

上接:spark3.0教程-SparkSQL:DataFrame介绍、与 RDD 的区别

案例

准备数据

创建文件 studentInfo.txt

内容如下:

李雷,20,男,1.82
韩梅梅,21,女,1.65
lucy,22,女,1.71
lili,22,女,1.71
张三,24,男,1.78

上传到 HDFS 上

代码

import findspark
findspark.init()

from pyspark.sql import SparkSession

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

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

print("-"*30)
print("df 类型:",type(df)) # 打印df类型

print("----Schema-----")
df.printSchema() # 打印 字段类型Schema
df.show() # 显示数据

解释:

  • csv():读取 csv 文件,可以读取本地文件,也可以读取 hdfs文件
  • sep=":列分隔符
  • header=False:没有表头
  • .toDF():设置列名,否则用默认列名,不方便查询

执行结果:

Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
------------------------------
df 类型: <class 'pyspark.sql.dataframe.DataFrame'>
----Schema-----
root
 |-- name: string (nullable = true)
 |-- age: string (nullable = true)
 |-- gender: string (nullable = true)
 |-- height: string (nullable = true)

+------+---+------+------+
|  name|age|gender|height|
+------+---+------+------+
|  李雷| 20|    男|  1.82|
|韩梅梅| 21|    女|  1.65|
|  lucy| 22|    女|  1.71|
|  lili| 22|    女|  1.71|
|  张三| 24|    男|  1.78|
+------+---+------+------+

原文出处:/show_1IX3FHlOgCca.html