如何解决“整数不能接受类型为<type'str'=“”>的对象'24'?

时间:2019-03-24 04:37:11

标签: pyspark

当我通过应用架构从RDD创建数据框时,会引发错误 “整数类型不能接受类型中的对象'24'。 这是我的代码:

myschema = StructType([StructField('name',StringType(),False),StructField('age',IntegerType(),False])
rdd = sc.textFile('/some/src.csv')
another_rdd = rdd.map(lambda i:i.encode('ascii').split(','))
df = sqlContext.createDataFrame(another_rdd, myschema)

my input (src.csv) looks like:
nive,24
pras,27

我是否必须将年龄字段转换为整数,或者还有其他方法?

1 个答案:

答案 0 :(得分:0)

StructField('age',IntegerType(),False)

您的年龄字段为int类型。但是,当您从csv中读取内容时,所有内容都会以字符串形式读取。您可以做的是在架构中将数据类型更改为StringType,然后将列强制转换为IntegerType

df = df.withColumn("age", df["age"].cast(IntegerType())).collect()