According to the docs,
VectorAssembler accepts the following input column types: all numeric types, boolean type, and vector type.
So you need to convert your array column to a vector column first (method from this question).
from pyspark.ml.linalg import Vectors, VectorUDT
from pyspark.sql.functions import udf
list_to_vector_udf = udf(lambda l: Vectors.dense(l), VectorUDT())
df_with_vectors = df.withColumn('a', list_to_vector_udf('a'))
Then you can use vector assembler:
vecAssembler = VectorAssembler(outputCol="features", inputCols=["a", "b", "c"])
vecAssembler.transform(df_with_vectors).show(truncate=False)
+-------------+---+---+---------------------+
|a |b |c |features |
+-------------+---+---+---------------------+
|[1.0,2.0,3.0]|0 |3 |[1.0,2.0,3.0,0.0,3.0]|
+-------------+---+---+---------------------+
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…