目录
[三、第三种( toDF(*tuple1) )](#三、第三种( toDF(*tuple1) ))
[四、 第四种(schema)](#四、 第四种(schema))
一、第一种 (withColumnRenamed)
假设要把如下a.csv的数据读取出来并分析:
(注意:csv会自动按照","给切分开 可以指定 option(sep,"\t")自定义切分符)
1,yuwen,43 1,shuxue,55 2,yuwen,77 2,shuxue,88 3,yuwen,98 3,shuxue,65 3,yingyu,88
withColumnRenamed("默认列名","自定义列名")
python
# 获取sparkSession对象
spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
"spark.sql.shuffle.partitions", 2).getOrCreate()
# 给文件的每一列命名
df=spark.read.csv("***文件位置****").withColumnRenamed("_c0","id").withColumnRenamed("_c1","subject").withColumnRenamed("_c2","score")
df.createOrReplaceTempView("scores")
df.show(truncate=False)
查询结果:
二、第二种(toDF)
toDF("列名","列名","列名")
python
# 获取sparkSession对象
spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
"spark.sql.shuffle.partitions", 2).getOrCreate()
# 给文件的每一列命名
df2=spark.read.csv("***文件位置****").toDF("id","subject","score")
df2.show()
查询结果:
三、第三种( toDF(*tuple1) )
toDF(*元组)
python
# 获取sparkSession对象
spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
"spark.sql.shuffle.partitions", 2).getOrCreate()
# 给文件的每一列命名
tuple1=("id","subject","score")
df3=spark.read.csv("***文件位置***").toDF(*tuple1)
df3.show()
查询结果:
四、 第四种(schema)
自定义表结构schema
python
# 获取sparkSession对象
spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
"spark.sql.shuffle.partitions", 2).getOrCreate()
# 给文件的每一列命名
score_schema=StructType([
StructField("id",IntegerType(),True),
StructField("name",StringType(),True),
StructField("score",DoubleType(),True),
])
df4=spark.read.csv('***文件位置***',schema=score_schema)
df4.show()
查询结果:
五、假如文件里自带有列名的情况(option)
如果文件里是如下数据:
id,username,math,computer,english 1,huangbo,34,58,58 2,xuzheng,45,87,45 3,wangbaoqiang,76,34,89
可以直接让第一行成为列明,使用option即可:
python
# 获取sparkSession对象
spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
"spark.sql.shuffle.partitions", 2).getOrCreate()
# 给文件添加表头
df4=spark.read.format("csv").option("header", "true").load("../../datas/zuoye/1104/03.txt")
df4.show(truncate=False)