文章目錄
- 1. 查看數(shù)據(jù)文件
- 2. 讀取數(shù)據(jù)文件得到單例數(shù)據(jù)幀
- 3. 將單列數(shù)據(jù)幀轉(zhuǎn)換成多列數(shù)據(jù)幀
- 在本次實(shí)戰(zhàn)中,我們的目標(biāo)是將存儲(chǔ)在HDFS上的以逗號(hào)分隔的文本文件
student.txt
轉(zhuǎn)換為結(jié)構(gòu)化的Spark DataFrame。首先,使用spark.read.text
讀取文件,得到一個(gè)包含單列value
的DataFrame。然后,利用split
函數(shù)按逗號(hào)分割每行字符串,并通過(guò)withColumn
和類(lèi)型轉(zhuǎn)換cast
創(chuàng)建新的列id
、name
、gender
和age
。最后,使用drop
函數(shù)移除原始的value
列,并使用show
和printSchema
驗(yàn)證轉(zhuǎn)換結(jié)果。通過(guò)這一系列操作,我們成功地將原始文本數(shù)據(jù)轉(zhuǎn)換為具有明確數(shù)據(jù)類(lèi)型和列名的結(jié)構(gòu)化數(shù)據(jù)集,為后續(xù)的數(shù)據(jù)分析和處理打下了基礎(chǔ)。
1. 查看數(shù)據(jù)文件
- 執(zhí)行命令:
hdfs dfs -cat /student/input/student.txt

2. 讀取數(shù)據(jù)文件得到單例數(shù)據(jù)幀
- 執(zhí)行命令:
val df = spark.read.text("hdfs://master:9000/student/input/student.txt")

- 執(zhí)行命令:
df.show

3. 將單列數(shù)據(jù)幀轉(zhuǎn)換成多列數(shù)據(jù)幀
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")
- 執(zhí)行上述命令

- 執(zhí)行命令:
stuDF.printSchema

- 執(zhí)行命令:
stuDF.show
