当前位置: 首页 > article >正文

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

目录

一、第一种 (withColumnRenamed)

二、第二种(toDF)

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

四、 第四种(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("默认列名","自定义列名")

    # 获取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("列名","列名","列名")

# 获取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(*元组)

# 获取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

# 获取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即可:

# 获取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)


http://www.kler.cn/a/389639.html

相关文章:

  • 如何下载对应城市的地理json文件
  • 为AI聊天工具添加一个知识系统 之48 蒙板程序设计(第二版):Respect九宫格【社会形态:治理】
  • 【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验
  • SpringBoot项目打war包要点
  • C#中无法在串口serialPort1_DataReceived启动定时器的解决方法
  • opencv图像基础学习
  • 如何使用 Web Scraper API 高效采集 Facebook 用户帖子信息
  • 跨域及解决跨域
  • 使用腾讯地图的 IP 定位服务。这里是正确的实现方式
  • 字节青训-游戏排名第三大的分数、补给站最优花费问题
  • vite-plugin-electron 库作用
  • 细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的另一种方法
  • 5G NR:各物理信道的DMRS配置
  • 【划分型 DP-最优划分】力扣2707. 字符串中的额外字符
  • 解决程序因缺少xinput1_3.dll无法运行的有效方法,有效修复丢失xinput1_3.dll
  • WPF的<ContentControl>控件
  • 常用的损失函数pytorch实现
  • 批量清除Word Excel PPT文件打开密码
  • 让redis一直开启服务/自动启动
  • wordpress站外调用指定ID分类下的推荐内容
  • i2c-tools 4.3 for Android 9.0
  • stm32 ADC实例解析(3)-多通道采集互相干扰的问题
  • PySimpleGUI库和pymysql库
  • 探索计算机互联网的奇妙世界:从基础到前沿的无尽之旅
  • 2024 年 Java 面试正确姿势(1000+ 面试题附答案解析)
  • 算法学习第一弹——C++基础