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)
相关推荐
2501_938780289 小时前
《不止 MapReduce:Hadoop 与 Spark 的计算模型差异及适用场景分析》
hadoop·spark·mapreduce
2501_9387739921 小时前
《Hadoop 与 Spark 融合路径:基于 Spark on YARN 的部署与调优技巧》
大数据·hadoop·spark
2501_938782092 天前
《大数据框架选型指南:Hadoop 与 Spark 的性能、成本与扩展性对比》
大数据·hadoop·spark
北邮-吴怀玉2 天前
6.1.1.3 大数据方法论与实践指南-SparkStreaming 任务优化实践
大数据·flink·spark·数据治理
Q26433650232 天前
【有源码】基于Hadoop与Spark的时尚精品店数据分析与可视化系统-基于多维度分析的零售时尚销售数据挖掘与可视化研究
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·毕业设计
北邮-吴怀玉2 天前
6.1.1.1 大数据方法论与实践指南-Spark/Flink 任务开发规范
大数据·flink·spark
LDG_AGI2 天前
【推荐系统】深度学习训练框架(一):深入剖析Spark集群计算中Master与Pytorch分布式计算Master的区别
人工智能·深度学习·算法·机器学习·spark
LDG_AGI2 天前
【推荐系统】深度学习训练框架(二):深入剖析Spark Cluster模式下DDP网络配置解析
大数据·网络·人工智能·深度学习·算法·机器学习·spark
丸卜3 天前
spark-RDD期中
spark
北邮-吴怀玉3 天前
6.1.1.2 大数据方法论与实践指南-实时任务(spark/flink)任务的 cicd 解决方案
大数据·flink·spark