Spark의 ml 라이브러리에서 HashingTF에서 가져온 DataFrame [SparseVector] 있습니다. - 기능 1 = 2147483647 번호 (최대)Spark의 Dataframe [SparseVector]에서 0이 아닌 값을 모두 얻는 방법?
root
|-- docId: string (nullable = true)
|-- docNGrams: array (nullable = true)
| |-- element: string (containsNull = true)
|-- HashedNGrams: vector (nullable = true)
HashedNGrams 2^(31)의 스파 스 벡터입니다 : 다음 내 스키마입니다. HashedNGrams의 예는 다음과 같습니다 그래서 몇 가지 조작을 할 수있는 무엇이든, 벡터, 목록 [지능],이 DataFrame에서
70921,235056
6067499,8758008
..... , ...
:
[doc/00000.txt,(2147483647,[70921,235056,....],[1.0,2.0,...])
[doc/00001.txt,(2147483647,[6067499,8758008,....],[1.0,1.0,...])
......
......
는 내가 원하는 것은 그냥 값을 얻을 수 있습니다 자료. 내가 지금까지 시도한 것은 : 1) 밀도가 높은 벡터로 변환하려고 시도하지만 한계를 벗어난다. VM 예외 2) 여기에서 찾은 모든 가능한 해결책을 시도했지만 아무런 결점도 없다! 그들은 모두 내게 오류를 제공합니다. 3) 파일에 저장 한 다음이 값을 String으로 취하려고했습니다 (아직 완료하지 않았지만 매우 잘못된 접근이라고 생각합니다).
도와주세요!
당신은 사용자 정의 함수 값의 배열로SparseVector
변환 (UDF)를 사용할 수 있습니다
귀하의 경우에는 '70921,235056'은 값이 아닌 색인입니다. – zero323