2016-06-22 2 views
0

문자열을 가져 와서 하위 문자열을 사용하여 문자열에서 값을 추출하고이 값을 사용하여 Cassandra 테이블을 쿼리하는 기능이 있습니다.Spark RDD를 사용하여 문자열을 전달하면 Cassandra에 대한 쿼리가 끊깁니다.

def formatInputString(line: String) = { 
    // extract values from line using sub-string and query Cassandra table. 
} 
내가 Source.fromFile를 사용하여 텍스트 파일을 읽어 값을 전달하면, 그것은 작동 (카산드라의 결과를 출력)

...

// using Scala getLine() 
for (line <- Source.fromFile("file.txt").getLines()) { 
      formatInputString(line) 
} 

그러나 그것은처럼 사용 불꽃 RDD 경우를 끊은 이 ...

// using Spark RDD 
val line = sc.textFile("file.txt") 
val lst = line.map(formatInputString) 

누군가가이 동작을 설명하고이를 해결하는 방법 (RDD 버전을 사용해야 함)이 가능합니까?

+0

"file.txt"는 로컬 파일입니까? 'textFile'은 HDFS 파일을 기대합니다. 오류가 없으므로 결과를 '수집'해야 할 수도 있습니다. spark의 로컬 파일에 관해서는 여기를 참고하십시오 : http://stackoverflow.com/questions/27299923/how-to-load-local-file-in-sc-textfile-instead-of-hdfs – spiffman

답변

0

스파크는 많은 작업을 기본적으로 게으른 방식으로 실행합니다. rdd.map (x => (some element transformation))을 호출하면이 변환은 작업을 실행할 때까지 발생하지 않습니다.

http://spark.apache.org/docs/latest/programming-guide.html#actions

당신은 위의 문서에서 볼 수 있듯이, 대신 '지도'의 'rdd.foreach'호출 시도 할 수 있습니다.

관련 문제