0


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

一、第一种 (withColumnRenamed)

假设要把如下a.csv的数据读取出来并分析:

(注意:csv会自动按照“,”给切分开 可以指定 option(sep,"\t")自定义切分符)

  1. 1,yuwen,43
  2. 1,shuxue,55
  3. 2,yuwen,77
  4. 2,shuxue,88
  5. 3,yuwen,98
  6. 3,shuxue,65
  7. 3,yingyu,88

withColumnRenamed("默认列名","自定义列名")

  1. # 获取sparkSession对象
  2. spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
  3. "spark.sql.shuffle.partitions", 2).getOrCreate()
  4. # 给文件的每一列命名
  5. df=spark.read.csv("***文件位置****").withColumnRenamed("_c0","id").withColumnRenamed("_c1","subject").withColumnRenamed("_c2","score")
  6. df.createOrReplaceTempView("scores")
  7. df.show(truncate=False)

查询结果:

二、第二种(toDF)

toDF("列名","列名","列名")

  1. # 获取sparkSession对象
  2. spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
  3. "spark.sql.shuffle.partitions", 2).getOrCreate()
  4. # 给文件的每一列命名
  5. df2=spark.read.csv("***文件位置****").toDF("id","subject","score")
  6. df2.show()

查询结果:

三、第三种( toDF(*tuple1) )

toDF(*元组)

  1. # 获取sparkSession对象
  2. spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
  3. "spark.sql.shuffle.partitions", 2).getOrCreate()
  4. # 给文件的每一列命名
  5. tuple1=("id","subject","score")
  6. df3=spark.read.csv("***文件位置***").toDF(*tuple1)
  7. df3.show()

查询结果:

四、 第四种(schema)

自定义表结构schema

  1. # 获取sparkSession对象
  2. spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
  3. "spark.sql.shuffle.partitions", 2).getOrCreate()
  4. # 给文件的每一列命名
  5. score_schema=StructType([
  6. StructField("id",IntegerType(),True),
  7. StructField("name",StringType(),True),
  8. StructField("score",DoubleType(),True),
  9. ])
  10. df4=spark.read.csv('***文件位置***',schema=score_schema)
  11. df4.show()

查询结果:

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

如果文件里是如下数据:

  1. id,username,math,computer,english
  2. 1,huangbo,34,58,58
  3. 2,xuzheng,45,87,45
  4. 3,wangbaoqiang,76,34,89

可以直接让第一行成为列明,使用option即可:

  1. # 获取sparkSession对象
  2. spark = SparkSession.builder.master("local[2]").appName("第一种方法").config(
  3. "spark.sql.shuffle.partitions", 2).getOrCreate()
  4. # 给文件添加表头
  5. df4=spark.read.format("csv").option("header", "true").load("../../datas/zuoye/1104/03.txt")
  6. df4.show(truncate=False)
标签: spark SparkSQL

本文转载自: https://blog.csdn.net/m0_57764570/article/details/143525474
版权归原作者 songqq27 所有, 如有侵权,请联系我们删除。

“Spark中给读取到的数据 的列 重命名的几种方式!”的评论:

还没有评论