Tôi có một RDD với một tuple của giá trị (String, SparseVector) và tôi muốn tạo một DataFrame sử dụng RDD. Để có được một (label: string, features: vector) DataFrame là Schema được yêu cầu bởi hầu hết các thư viện của thuật toán ml. Tôi biết điều đó có thể được thực hiện bởi vì HashingTF Thư viện ml xuất ra một véc tơ khi được cung cấp cột tính năng của DataFrame.Làm thế nào để chuyển đổi một RDD với một cột SparseVector đến một DataFrame với một cột như Vector
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)
Vì vậy, câu hỏi của tôi là, tôi bằng cách nào đó có thể có một RDD của (String, SparseVector) chuyển nó sang một DataFrame của (String, vector). Tôi đã thử với thông số sqlContext.createDataFrame
nhưng không có DataType phù hợp với nhu cầu của tôi.
df = sqlContext.createDataFrame(rdd,StructType([
StructField("label" , StringType(),True),
StructField("features" , ?Type(),True)
]))
Wow, tôi đã tìm kiếm điều này trong thời đại! gần như khóc hạnh phúc:,) +1 –
Điều này đã hiệu quả! Cảm ơn nhiều! bạn có thể cho tôi biết trong tài liệu đó ở đâu không? không thể tìm thấy bất kỳ VectorUDT trên linalg apache spark Docs –
@OrangelMarquez có thể yêu cầu kéo là bắt buộc –