Spark中给读取到的数据 的列 重命名的几种方式!

目录

一、第一种 (withColumnRenamed)

二、第二种(toDF)

[三、第三种( toDF(*tuple1) )](#三、第三种( toDF(*tuple1) ))

[四、 第四种(schema)](#四、 第四种(schema))

五、假如文件里自带有列名的情况(option)


一、第一种 (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)
相关推荐
知初~17 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database
努力的小T1 天前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
Java资深爱好者1 天前
在Spark中,如何使用DataFrame进行高效的数据处理
大数据·分布式·spark
阿里云大数据AI技术1 天前
美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
大数据·阿里云·spark·serverless·emr
python资深爱好者1 天前
什么容错性以及Spark Streaming如何保证容错性
大数据·分布式·spark
猪猪果泡酒1 天前
spark
spark
weixin_307779132 天前
PySpark实现MERGE INTO的数据合并功能
大数据·python·spark
lucky_syq3 天前
Spark算子:大数据处理的魔法棒
大数据·分布式·spark
D愿你归来仍是少年3 天前
解决Python升级导致PySpark任务异常方案
大数据·开发语言·python·spark
weixin_307779133 天前
PySpark检查两个DataFrame的数据是否一致
大数据·spark·pandas