0

다음 코드가 있으며 결과를 생성 한 직후 응용 프로그램이 종료됩니다. 내가 스파크 카산드라 커넥터와 카산드라에 대해 아래의 코드를 실행하면Cassandra 테이블에서 로컬 파일보다 데이터 집합을 읽을 때 Spark 응용 프로그램을 실행하는 데 시간이 오래 걸리는 이유는 무엇입니까?

def textProcess(sc: SparkContext) { 

    val baseRDD = sc.textFile("C:\\myDrive\\test.log")  
    val result = baseRDD.map { x => x }.reduce((accum, current) => accum) 
    println(result) 
    sc.close() 
    } 

는하지만, 응용 프로그램은 후 약 10 초 지연을 종료합니다. 이 지연 스파크 카산드라 커넥터를 처리 할 때 왜

def dbProcess(sc: SparkContext) { 

    val baseRDD = sc.cassandraTable("local_test", "configurations") 
    val result = baseRDD.map { x => x.getString("keyname") }.reduce((accum,current) => accum) 
    println(result) 
    sc.close()  
    } 

버전 정보

스파크 버전은 1.6.x 이상인

<dependency> 
     <groupId>com.datastax.spark</groupId> 
     <artifactId>spark-cassandra-connector_2.10</artifactId> 
     <version>1.6.0</version> 
    </dependency> 

    <dependency> 
     <groupId>com.datastax.cassandra</groupId> 
     <artifactId>dse-driver</artifactId> 
     <version>1.1.0</version> 
    </dependency> 

    <dependency> 
     <groupId>com.datastax.cassandra</groupId> 
     <artifactId>cassandra-driver-core</artifactId> 
     <version>3.0.2</version> 
    </dependency> 

내 질문은, 여기? 이 지연을 피할 수있는 방법이 있습니까? 또는이 버전 문제가 무엇입니까? (나는 다른 버전을 시도했지만 결과는 그대로입니다)

답변

3

왜 spark-cassandra-connector를 다룰 때이 지연이 발생합니까?

기본적 차이점은 다음 두 라인 귀결

sc.textFile("C:\\myDrive\\test.log") 

과 전 로컬 파일에 비교적 저렴한 액세스이다

sc.cassandraTable("local_test", "configurations") 

후자는 원격 액세스하면서 카산드라 클러스터는 네트워크를 통한 조작이 매우 까다 롭습니다.

카산드라 클러스터의 성능을 제쳐두고 네트워크 액세스는 확실히 로컬 파일에 액세스하는 것보다 시간이 많이 걸립니다. 은 그렇지 않습니까?

+0

예. 그래서 내 클러스터 크기가 커지면이 지연이 증가할까요? – BDR

+0

그것은 Cassandra가 새 노드를 처리하는 방법에 따라 달라지며 새로운 노드를 추가해도 반드시 cassandra 클라이언트의 성능에 영향을 줄 수는 없습니다. –

+0

좋아요 .Jacek Laskowski 감사합니다. – BDR