将单列数据帧转换成多列数据帧

文章目录

  • [1. 查看数据文件](#1. 查看数据文件)

  • [2. 读取数据文件得到单例数据帧](#2. 读取数据文件得到单例数据帧)

  • [3. 将单列数据帧转换成多列数据帧](#3. 将单列数据帧转换成多列数据帧)

  • 在本次实战中,我们的目标是将存储在HDFS上的以逗号分隔的文本文件student.txt转换为结构化的Spark DataFrame。首先,使用spark.read.text读取文件,得到一个包含单列value的DataFrame。然后,利用split函数按逗号分割每行字符串,并通过withColumn和类型转换cast创建新的列idnamegenderage。最后,使用drop函数移除原始的value列,并使用showprintSchema验证转换结果。通过这一系列操作,我们成功地将原始文本数据转换为具有明确数据类型和列名的结构化数据集,为后续的数据分析和处理打下了基础。

1. 查看数据文件

  • 执行命令:hdfs dfs -cat /student/input/student.txt

2. 读取数据文件得到单例数据帧

  • 执行命令:val df = spark.read.text("hdfs://master:9000/student/input/student.txt")
  • 执行命令:df.show

3. 将单列数据帧转换成多列数据帧

scala 复制代码
val stuDF = df
  .withColumn("id", split(col("value"), ",")(0).cast("int"))
  .withColumn("name", split(col("value"), ",")(1))
  .withColumn("gender", split(col("value"), ",")(2))
  .withColumn("age", split(col("value"), ",")(3).cast("int"))
  .drop("value") // 删除原始的 value 列
  • 执行上述命令
  • 执行命令:stuDF.printSchema
  • 执行命令:stuDF.show
相关推荐
howard20053 个月前
任务4.8.4 利用Spark SQL实现分组排行榜
spark sql·分组排行榜
howard20053 个月前
任务4.8.3 利用SparkSQL统计每日新增用户
spark sql·每日新增用户数
howard20054 个月前
Spark SQL - 操作数据帧
大数据·spark·数据帧
富朝阳7 个月前
superset连接Apache Spark SQL(hive)过程中的各种报错解决
hive·sql·spark·spark sql·superset·superset报错解决
Francek Chen9 个月前
Spark编程实验三:Spark SQL编程
大数据·sql·spark·spark sql
流月up1 年前
7.spark sql编程
大数据·sql·spark·spark sql·rdd转dataframe
月亮给我抄代码1 年前
Hive Cli / HiveServer2 中使用 dayofweek 函数引发的BUG!
大数据·数据仓库·hive·sql·spark sql