Как исправить "Integer не может принять объект '24' в типе«? - PullRequest
0 голосов
/ 24 марта 2019

Когда я создаю фрейм данных из RDD, применяя схему, он выдает ошибку Msgstr "Целочисленный тип не может принимать объект '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

Нужно ли указывать поле возраста для int или есть какой-то другой способ?

1 Ответ

0 голосов
/ 24 марта 2019
StructField('age',IntegerType(),False)

Ваше поле возраста имеет тип int.Но когда вы читаете из CSV, все читается как строки.Вместо этого вы можете изменить тип данных на StringType в схеме, а затем преобразовать свой столбец в IntegerType:

df = df.withColumn("age", df["age"].cast(IntegerType())).collect()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...