2015-01-22 3 views
0

spark-sql cli를 사용하여 하이브 cli 쉘을 대체하려고합니다. spark-sql cli를 명령과 함께 실행합니다 (우리는 Hadoop 클러스터는, 하이브-site.xml 파일은 이미/conf의)쿼리를 실행할 때 Spark-sql CLI가 오직 하나의 실행 프로그램을 사용합니다.

.> 복사 스파크-SQL 다음 쉘이 열리고

, 작품을 좋아 내가 쿼리 뭔가 같은

을 실행한다./spark-sql> devicetype에 의해 mytable 그룹에서 devicetype, count (*)를 선택하십시오;

명령이 성공적으로 실행되고 결과가 정확합니다. 하지만 성능이 매우 느리다는 것을 알았습니다.

스파크 작업 ui 인 http://myhost:4040에서 1 개의 Executor 만 사용 된 것으로 나타났습니다. 그럴 수도 있습니다.

그리고 spark-sql 스크립트를 수정하고 exec 명령에 -num-executors 500을 추가하려고 시도하지만 도움이되지 않습니다.

누구든지 왜 도와 줄 수 있습니까?

감사합니다.

답변

1

이 문서를 참조하십시오 : 당신은 하나의 집행자에게 볼 이유 http://spark.apache.org/docs/latest/sql-programming-guide.html

spark-sql은 로컬 모드에서 작동하는 SQL의 CLI 도구, 즉

당신은 SQL의 클러스터 버전을 가지고 싶다면, thriftserver을 시작하고 beeline 도구 (Spark와 함께 사용)를 사용하여 JDBC를 통해 연결해야합니다.

export HIVE_SERVER2_THRIFT_PORT=<listening-port> 
export HIVE_SERVER2_THRIFT_BIND_HOST=<listening-host> 
./sbin/start-thriftserver.sh \ 
    --master <master-uri> \ 
    ... 

연결하려면 :

./bin/beeline 
beeline> !connect jdbc:hive2://<listening-host>:<listening-port> 
+0

답장을 보내 주셔서 감사합니다. 나는 스파크 작업이 아닌 SQL을 실행하기 위해 M/R 작업을 사용하여 beeline을 시도하고 보았다. 그리고 내가 원하는 것은 spark를 사용하여 작업을 수행하는 것입니다. 그래서 지금 할 방법이 없습니까? –

+0

먼저, spark에서 작업하기 위해 중고 서버를 시작 했습니까? 'start-thriftserver.sh'는 Spark 디렉토리에 위치해야합니다. 둘째, 올바른 포트를 beeline에 지정했는데 Hive에 연결하지 않았습니까? 확실한 점은 하이브가 동일한 머신에서 실행 중일 때 하이버 쓰레드 서버를 멈추게 할 것을 권한다. – 0x0FFF

+0

사용자들은 bevel을 사용하기 위해 마이그레이션하지 않을 것이며, spark-sql은 호환되기 때문에 이전에 하이브 쿼리를 사용했다. 하이브와 함께 spark-sql로 돌아 가야합니다. spark-sql 유형을 볼 때 --help, -num-executors와 같은 매개 변수가 있다고 가정합니다. 로컬 모드에서만 작동 할 수 있다고 가정 할 때 왜 작동하지만 작동하지 않을 수 있습니까? –

0

직선 \> !connect jdbc:hive2://localhost:10002/default;transportMode=http;httpPath=cliservice 당신은 http://spark.apache.org/docs/latest/sql-programming-guide.html

시작하려면 드리프트 JDBC 실행 장 의 기술/ODBC 서버 공식 문서을 찾을 수 있습니다

10002는 spark thrift 서버용 포트입니다.

변경하십시오. 쓰레기 수거함에서 쓰레기 수거 항을 찾을 수 있습니다.