spark有3种数据结构——RDD、DataFrame、DataSet。这里展示的文件读写方式,都是针对dataFrame数据结构的,也就是文件读进来之后,是一个spark dataFrame。
0、首先连接spark
from pyspark.sql import SparkSession # SparkConf、SparkContext 和 SQLContext 都已经被封装在 SparkSession
spark=SparkSession \
.builder \
.appName('my spark task') \
.getOrCreate()
1、读写hdfs上的文件
SparkSession在读取【hdfs上文件】的时候,可以指定读取文件的格式,支持的文件格式有json, parquet, jdbc, orc, libsvm, csv, text。
1.1 读写hdfs上的文件 ——> 读写csv、json、text文件
【读取】:按照csv文件格式,读取文件
其余的文件格式只需将csv变成相应的文件格式名称即可
from pyspark.sql.types import IntegerType, DoubleType, StringType, StructType, StructField
# 文件在hdfs上的位置
file_path = r"/user/lanyue/data.csv"
# 指定文件的schema
schema = StructType([
StructField("column_1", StringType(), True), # nullable=True代表此字段的值不为空
StructField("column_2", StringType(), True),
StructField("column_3", StringType(), True),
])
# 方法一
# 推荐这种,指定什么文件格式都可以,只需要修改参数format即可
# 不同的格式其load函数会有不同,用的时候请自行搜索。
df = spark.read.format("csv").load(file_path, header=True, inferSchema=True, encoding=