我有一個DataFrame [SparseVector]從Spark中的ml庫中的HashingTF獲得。下面是我的架構:如何從Spark中的Dataframe [SparseVector]獲取所有非零值?
root
|-- docId: string (nullable = true)
|-- docNGrams: array (nullable = true)
| |-- element: string (containsNull = true)
|-- HashedNGrams: vector (nullable = true)
HashedNGrams被2^31的稀疏矢量 - 1 = 2147483647號的特徵(最大)。 HashedNGrams的一個例子是:
[doc/00000.txt,(2147483647,[70921,235056,....],[1.0,2.0,...])
[doc/00001.txt,(2147483647,[6067499,8758008,....],[1.0,1.0,...])
......
......
我想要的是得到公正的價值觀:從這個數據幀
70921,235056
6067499,8758008
..... , ...
到Vector,列表[INT],什麼的,這樣做的一些操作數據。我到目前爲止試過的是: 1)嘗試將其轉換爲密集的矢量,但它給了我一個超出限制虛擬機異常 2)嘗試了我從這裏找到的所有可能的解決方案,但根本不缺乏!他們都給我一個錯誤。 3)即使將它保存在一個文件中,然後試圖將這些值作爲一個字符串(還沒有完成,但我覺得這是非常錯誤的方法)。
請幫忙!
你的情況'70921,235056'是索引而不是值。 – zero323