2017-04-28 1 views
0

저는 Spark를 처음 접했고 결과 집합에 4 억 개의 행이있는 Spark SQL을 실행하려고했습니다. Jupyter 노트북에서 Spark SQL을 실행하고 있습니다. Azure HDInsight에서 Spark를 사용하고 있습니다. 집행 인의 3 Jupyter 노트북을 사용하여 Spark SQL을 사용하여 4 억 개의 행 풀기

  • 번호 - - 5
  • 집행자 메모리 - 4,098메가바이트
  • 을만큼 나는 실행으로

    집행자 당 코어의
    1. 번호 : 스파크 클러스터의 구성은 다음과 처음 몇 줄을주고 쿼리를하면 모든 것이 잘 작동합니다. 그러나 모든 행, 즉 4 억 행을 꺼내려고하면 "집행자가 요청을 취소했습니다"라는 오류가 발생합니다.

      내가 알고 싶은 첫 번째 점은 Spark SQL 또는 Jupyter 노트북에서이 볼륨의 데이터를 가져올 수 있다는 것입니다.

      실제로이 볼륨을 가져올 수있는 경우, 내가 잘못하고있는 것은 무엇입니까?

      현재 정확한 오류 메시지가 표시되지 않으며 오류 메시지와 함께이 게시물을 곧 업데이트합니다.

      하지만 누구나 도움을받을 수 있다면 큰 도움이 될 것입니다.

      감사합니다.

    +2

    4GB 집행자와 함께 5 억 행을 처리하고 싶습니다. 그게 야심 찬 것입니다. 실제로 1 천만 달러를 처리하면 운이 좋을 것입니다. –

    답변

    0

    일반적으로 400M 행을 구체화하려면 분산 계산이라는 개념에 위배됩니다. 성취하고자하는 것에 대한 세부 사항을 제공 할 수 있다면,이를 어떻게 병렬 방식으로 수행하는지 제안 할 수 있습니다. Spark에는 대부분의 사용 사례를 수용 할 수있는 유연한 API가 있습니다.

    여전히 문제가 발생할 수 있습니다. 400M 행을 수집하면 드라이버 프로세스에서 누적됩니다. Azure HDInsight에서는 드라이버 프로세스가 얀 마스터 응용 프로그램에서 실행됩니다. 많은 양의 데이터를 저장할 충분한 메모리가 있도록 구성해야합니다. Jupyter의 구성은 다음과 같습니다

    %% 구성 -f { "driverMemory": "60G"}

    그냥 노트북에 별도의 세포로 추가.

    +0

    우리는 스파크가 우리의 요구 사항을 충족 시킬지 여부를 결정하려고 노력하고 있습니다. 사용자가 응용 프로그램에서 사용하는 테이블의 모든 열을 가져 와서 데이터 그리드에 표시 할 수있는 솔루션을 구축해야합니다. 이제 사용자는 테이블 조인의 모든 행이 데이터 표에 표시 될 것으로 기대하면서 테이블에서 N 개의 열을 가져올 수 있기를 원합니다. 이것이 400M 행을 구체화하려는 이유입니다. 왜냐하면 그것이 생산시에도 볼 수있는 데이터 볼륨이기 때문입니다. –

    +0

    이 경우 사용자가 확장 가능한 데이터 탐색 도구를 제공해야하는 경우 데이터 크기에 맞게 스파크 드라이버를 늘리거나 SQL 또는 NoSQL 데이터베이스 (MS SQL, MySQL 등의 임시 외부 저장소에 결과를 저장할 수 있습니다. , CosmosDB, HBase) 그리고 그 위에 adhock 쿼리를 사용하여 UI의 특정 데이터 부분을 보여줍니다. Spark에서는 데이터 소스를 사용하여 외부 데이터베이스에 결과를 병렬로 저장하는 것이 쉽습니다. – maxiluk

    관련 문제