如何将RDD [List [String]]转换为RDD [List [Float]]

时间:2017-12-12 06:04:27

标签: python apache-spark pyspark

例如,本地文件data.txt的结构是:

1.0 2.0 3.0 4.0
5.0 6.0 7.0 8.0
       ...

将文件读取为RDD [String]:

lines = sc.textFile("data.txt")

拆分为RDD [List [String]]:

data_temp = lines.map(lambda line: line.split(" "))

如何转换为RDD [List [Float]]?

我知道json.loads()可以解析字符串,在这种情况下怎么办?

1 个答案:

答案 0 :(得分:1)

分割线条时,只需将所有字符串转换为浮点数:

data_temp = line.map(lambda line: [float(i) for i in line.split(" ")])

或者您可以将数据作为数据框读取并推断出类型:

df = (spark.read
  .schema(schema)
  .option("header", "true")
  .option("inferSchema", "true")
  .csv("some_input_file.csv"))

有关阅读csv文件时不同选项的详细信息,请参阅here