在Spark中读取具有多个标题的文本文件

时间:2019-11-27 09:01:07

标签: apache-spark pyspark apache-spark-sql

我有一个带有多个标题的文本文件,其中“ TEMP”列具有当天的平均温度,其次是记录数。如何正确阅读此文本文件以创建DataFrame

STN--- WBAN   YEARMODA    TEMP     
010010 99999  20060101    33.5 23
010010 99999  20060102    35.3 23
010010 99999  20060103    34.4 24
STN--- WBAN   YEARMODA    TEMP     
010010 99999  20060120    35.2 22
010010 99999  20060121    32.2 21
010010 99999  20060122    33.0 22

2 个答案:

答案 0 :(得分:1)

  1. 您可以在RDD
  2. 中将文本文件读取为普通文本文件。
  3. 您在文本文件中有一个分隔符,我们假设它是一个space
  4. 然后您可以从其中删除标题
  5. 删除所有不等于标题的行
  6. 然后使用RDD.toDF(col_names)转换为数据框

赞:

rdd = sc.textFile("path/to/file.txt").map(lambda x: x.split(" ")) # step 1 & 2
headers = rdd.first() # Step 3
rdd2 = rdd.filter(lambda x: x != headers)
df = rdd2.toDF(headers) # Step 4

答案 1 :(得分:0)

您可以尝试一下。我已经在控制台上尝试过。

val x = sc.textFile("hdfs path of text file")
val header = x.first()
var y = x.filter(x=>(!x.contains("STN"))) //this will remove all the line 
var df = y.toDF(header)

希望这对您有用。