【发布时间】:2016-05-24 10:24:51
【问题描述】:
我有一个 csv 文件,看起来像这样
A B C
1 2
2 4
3 2 5
1 2 3
4 5 6
当我将这些数据读入 Spark 时,它会将 C 列视为“字符串”,因为前几行中有“空白”。
谁能告诉我如何在 SQL 数据框中加载这个文件,使 c 列保持整数(或浮点数)?
我正在使用“sc.textFile”将数据读入 Spark,然后将其转换为 SQL 数据帧。
我的代码部分。在代码的最后一行我得到了错误。
myFile=sc.textFile(myData.csv)
header = myFile.first()
fields = [StructField(field_name, StringType(), True) for field_name in header.split(',')]
fields[0].dataType = FloatType()
fields[1].dataType = FloatType()
fields[2].dataType = FloatType()
schema = StructType(fields)
myFileCh = myFile.map(lambda k: k.split(",")).map(lambda p: (float(p[0]),float(p[1]),float(p[2])))
谢谢!
【问题讨论】:
-
您需要使用模式匹配并根据 c 中的内容强制转换为所需的类型
-
@z-star:感谢您的评论!但我没听懂你在说什么。我正在按照这个 (nodalpoint.com/…) 方法将我的数据转换为 SQL 数据框。当我尝试创建“taxi_temp”部分时,问题就来了。在我的数据集中,最后一列是空白的,我提到数据类型为“float”。所以,它说不能将“字符串”转换为“浮点数”。
-
好的。你能发布你的代码吗?
-
我已经更新了主要问题中的代码 sn-p。
-
您将数据洒在逗号上,但您发布的数据中没有逗号
标签: apache-spark pyspark spark-dataframe pyspark-sql