У меня есть RDD с набором значений (String, SparseVector), и я хочу создать DataFrame с использованием RDD. Чтобы получить (метка: строка, функции: вектор) DataFrame, который является Схемой, требуемой большинством библиотек алгоритма ml. Я знаю, что это можно сделать, потому что библиотека HashingTF ml выводит вектор, когда ему передается столбец функций DataFrame.
temp_df = sqlContext.createDataFrame(temp_rdd, StructType([
StructField("label", DoubleType(), False),
StructField("tokens", ArrayType(StringType()), False)
]))
#assumming there is an RDD (double,array(strings))
hashingTF = HashingTF(numFeatures=COMBINATIONS, inputCol="tokens", outputCol="features")
ndf = hashingTF.transform(temp_df)
ndf.printSchema()
#outputs
#root
#|-- label: double (nullable = false)
#|-- tokens: array (nullable = false)
#| |-- element: string (containsNull = true)
#|-- features: vector (nullable = true)
Итак, мой вопрос, могу ли я как-то с RDD (String, SparseVector) преобразовать его в DataFrame (String, vector). Я пытался с обычным sqlContext.createDataFrame
но нет DataType, который соответствует моим потребностям.
df = sqlContext.createDataFrame(rdd,StructType([
StructField("label" , StringType(),True),
StructField("features" , ?Type(),True)
]))