这个读取蛮水的。but从官网来的。
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.enableHiveSupport().getOrCreate()
df = spark.read.csv("/tmp/resources/zipcodes.csv")
df.printSchema()
##可以得到
root
|-- _c0: string (nullable = true)
|-- _c1: string (nullable = true)
|-- _c2: string (nullable = true)
是的,读取就一句话:spark.read.csv("/tmp/resources/zipcodes.csv"),但是读取出来的效果你可能不太满意,因为没有数据的名字c0,c1,c2是个什么鬼,所以可以加上一些条件的来读取:
df3 = spark.read.options(header='True', inferSchema='True', delimiter=',') \
.csv("/tmp/resources/zipcodes.csv")
##可以得到,比如说:
|-"学生姓名" String
|-"学生成绩" Int
解释一下,header=true才会读取你的表头,也就是“”学生姓名“,这个最常用
delimiter是指你的csv文件使用的什么间隔符,如果这个你看不懂,说明你用的是默认的,那可以使用delimiter=',',或者完全不提delimiter。如果你封装csv的时候就设定了你的分隔符,这里改成你的。
inferSchema 根据你的数据预测你的数据类型,加了的话读取的次数是2次。这么说吧,比如学生的成绩,你不加的话,读出来的类型是string,加了就是int。
ref:https://sparkbyexamples.com/pyspark/pyspark-read-csv-file-into-dataframe/#read-csv-dataframe