의사 배포 모드에서 Hadoop을 설치했다면 단일 서버에서만 Hadoop을 실행한다고 말하는 것입니까? 그렇다면 결코 DB2만큼 빠르지 않을 것입니다. Hadoop과 Hive는 클러스터에서 실행되고 확장되도록 설계되었습니다. 클러스터에서 3 개 또는 4 개의 서버를 실행하면 대규모 데이터 세트에서 인상적인 쿼리 속도를 볼 수 있습니다.
Java 힙 (http://www-01.ibm.com/support/docview.wss?uid=swg21587457)의 기본 메모리 양을 초과하여 Cognos Query Service에 액세스 할 수 있는지 확인하십시오. 현재 8Gb의 초기 크기와 최대 12Gb를 실행하지만 이따금 블로깅 할 수 있습니다.
다음으로 실행하게 될 문제는 Cognos가 Hive SQL 사양 (또는 내가 사용중인 Impala)을 알지 못한다는 것입니다. 즉, 기본이 아닌 쿼리는 select에서 select로 변환 될 것입니다. 커다란 누락 된 부분은 where 절이 될 것입니다. 이는 Cognos가 Hive 테이블의 모든 데이터를 빨아 들이고 Cognos가 속한 Hive로 전달하지 않고 Cognos에서 필터링을 수행한다는 것을 의미합니다. Cognos는 DB2 SQL 및 모든 특성을 작성하여 해당 워크로드를 통과시킬 수있는 방법을 알고 있습니다.
쿼리가 더 복잡하거나 플랫폼 특정 함수 등이 일반적으로 Hive (날짜 함수, 분석 함수 등)에 전달되지 않으므로 데이터와 쿼리를 구조화하여 필터에 필요하도록하십시오.
하이브 쿼리 로그를 사용하여 Cognos가 실행중인 쿼리를 모니터링합니다. 또한 쿼리에 필드를 추가 한 다음 모델에서 필터로 직접 이동하는 대신 해당 필드를 필터로 드래그하십시오. Cognos가 where 절에 필터를 포함시키는 데 도움이 될 수 있음을 발견했습니다.
다른 옵션은 Report Studio에서 패스 스루 SQL 쿼리를 사용하고 하이브의 SQL에 모두 쓰는 것입니다. 나는 5 백만 행이있는 사실 테이블에서 상위 5 개의 스택을 필요로하는 대시 보드 집합에 대해이 작업을 수행했습니다. 5 행의 경우 Cognos는 5 백만 행을 모두 추출한 다음 Cognos에서 순위를 매겼습니다. 이 작업을 여러 번 반복하면 Cognos가 갑자기 고생 할 것입니다. 패스 스루 쿼리를 사용하면 임팔라 랭크() 함수를 사용할 수 있고 DB2가 내가 적절한 (그러나 작은) 클러스터에서 돌아가는 것을 보는 것보다 훨씬 빠르고 더 빨리 5 개의 행을 얻을 수 있습니다.
하이브에 대한 또 다른 고려 사항은 맵 축소에 하이브를 사용하는지 아니면 TEZ에서 하이브를 사용하는지 여부입니다. 동료가 발견 한 것부터, TEZ의 Hive는 Cognos가 Map Reduce에서 실행하는 쿼리 유형보다 훨씬 빠릅니다.
하이브는 일반적으로 RDBMS보다 느리게 진행됩니다. 하이브에서 직접 쿼리를 테스트 해 보셨습니까? – Andrew
보고서가 매우 느리게 실행되기 때문에 속도를 높일 수있는 방법이 있습니까? 간단한 보고서의 경우 2 ~ 3 분이 소요됩니다. –