Мой панда DataFrame
df4.head()
features
0 [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, ...
1 [0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, ...
Каждая ячейка представляет собой список python.
mySchema=StructType([StructField("features",ArrayType(IntegerType()),True)])
sdf2=sqlCtx.createDataFrame(df4,schema=mySchema)
При создании spark Dataframe sdf2 я получаю следующую ошибку. Я пробовал с разными типами данных, но тщетно.
Error: element in array field features: IntegerType can not accept object 0 in type <class 'numpy.int64'>
Я хочу запустить BucketedRandomProjectionLSH в Pysark, который принимает один столбец с вектором данных.
Это потому, что у вас есть объекты numpy.int64
внутри ваших массивов.
Спарк не соглашается с этим.
df = pd.DataFrame([
(np.array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]),),
(np.array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0]),),
], columns = ['features'])
type(df.iloc[0]['features'][0])
> numpy.int64
df = pd.DataFrame([
([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],),
([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],),
], columns = ['features'])
type(df.iloc[0]['features'][0])
> int
Вместо этого попробуйте использовать list
Python.