[英]Spark ClassCastException: JavaRDD cannot be cast to org.apache.spark.mllib.linalg.Vector
[英]How to convert apache.spark.ml.linalg.Vector to arrayList in java?
我正在嘗試將apache.spark.ml.linalg.Vector
轉換為Java中的ArrayList
。
源代碼是這樣的:
Vector vector = (Vector) row.get(1);
ArrayList<String> vectorList = new ArrayList<String>(vector);
錯誤是:
Cannot resolve constructor
'ArrayList(org.apache.spark.ml.linalg.Vector)'
我怎樣才能做到這一點?
您不能直接將Vector
轉換為ArrayList<String>
。 Vector
提供了一個toArray()
方法( 文檔 ),該方法返回double
類型的數組,您可以使用該方法將其轉換為ArrayList<String>
,如下所示:
Vector vector = (Vector) row.get(1);
double[] vectorArray = vector.toArray();
ArrayList<String> vectorList = new ArrayList<>();
for (double vectorElement: vectorArray) {
vectorList.add(String.valueOf(vectorElement));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.