2017-12-29 42 views
-2

I는 그것이 하나의 단어가 포함되어리스트의 배열 인/스칼라

scala> a 
res17: Array[org.apache.spark.sql.Row] = Array([0_42], [big], [baller], [bitch], [shoe] ..) 

아래와 같다 a라는 스칼라 변수를 갖는다.

내가 단일 포장 배열의 배열을 만들려고하고 이유를 잘

Array[Seq[String]] = Array(WrappedArray(0_42,big,baller,shoe,?,since,eluid......... 

이유는 아래 그림처럼 문자열의 순서로 구성된 하나의 배열로 변환하고 싶은

내가 word2vec 실행할입니다 MLLIB를 사용하여 스파크 모델.

이 함수의 fit() 함수는 반복 가능한 문자열 만 사용합니다.

scala> val model = word2vec.fit(b) 
<console>:41: error: inferred type arguments [String] do not conform to method fit's type parameter bounds [S <: Iterable[String]] 
+0

는 예시적인 입력하고 – zenwraight

+0

예시 입력되는 방법을 예시적인 출력을 제공 할 수있다 따르는 배열 ([A], [B], [C], [D])과 출력되어야 배열 (wrappedarray (a, b ,, c, d)) – vish

+4

[행에서 스파크 추출 값]의 가능한 복제본 (https://stackoverflow.com/questions/33007840/spark-extracting-values-from-a-row) – philantrovert

답변

0
당신이 목록하고 샘플 데이터가 array of lists하지

하지만 array of Rows. 하나의 WrappedArray 배열을 만들려고해도 의미있는 목적을 달성하지 못하는 것 같습니다. 당신이 경우에

val df = Seq(
    ("0_42"), ("big"), ("baller"), ("bitch"), ("shoe"), ("?"), ("since"), ("eliud"), ("win") 
).toDF("word") 

val a = df.rdd.collect 
// a: Array[org.apache.spark.sql.Row] = Array(
// [0_42], [big], [baller], [bitch], [shoe], [?], [since], [eliud], [win] 
//) 

import org.apache.spark.sql.Row 

val b = a.map{ case Row(w: String) => w } 
// b: Array[String] = Array(0_42, big, baller, bitch, shoe, ?, since, eliud, win) 

[업데이트]

: 당신이 당신의 Array[Row] 데이터 구조에있는 모든 단어 문자열 배열을 만들려면

는 단순히 다음과 같은 map을 사용할 수 있습니다

val b = Array(a.map{ case Row(w: String) => w }.toSeq) 
// b: Array[Seq[String]] = Array(WrappedArray(
// 0_42, big, baller, bitch, shoe, ?, since, eliud, win 
//)) 
+0

글쎄 단일 배열의 배열을 만들려고하는 이유는 내가 MLLIB를 사용하여 스파크에서 word2vec 모델을 실행하고 싶습니다. 이 함수의 fit() 함수는 반복 가능한 문자열 만 사용합니다. 나는 val b를 만들 수 있었지만 그것을 사용하여 모델을 실행할 수는 없었다. 다음과 같은 오류가 발생했다. scala> val model = word2vec.fit (b) : 41 : 오류 : 유추 된 유형 인수 [String]이 준수하지 않음 메서드 fit의 형식 매개 변수 경계 [S <: Iterable [String]] val model = word2vec.fit (b) – vish

+0

@vish, 업데이트 된 답변을 참조하십시오. –

+0

나는 대답을 – vish

0

나는 마침내 지내에 의해 작동있어 : 단일 WrappedArray의 배열을 만들려면 여기에 하나의 접근 방식 g

val db=a.map{ case Row(word: String) => word } 
val model = word2vec.fit(b.map(l=>Seq(l))) 
+0

'f'는 어디에서 왔습니까? –