2017-02-24 6 views
2

Azure Hadoop HDI 시스템은 대부분 Azure Storage Account Blob에 저장됩니다. Hadoop에서 파일에 액세스하려면 WASBS : // 파일 시스템 유형이 필요합니다.SQL 2016 PolyBase Compute 푸시 다운을 Hadoop으로 푸시 다운 WASBS라고도하는 Azure Blob을 사용합니다.

Azure blob에 저장된 데이터의 특정 쿼리에 대해 HDI 클러스터로 푸시 다운 연산을 수행하도록 SQL 2016 Polybase를 구성하려고합니다.

Polybase에서 Hadoop 외부의 Azure Blob을 사용할 수 있습니다. 쿼리 힌트 "옵션 (FORCE EXTERNALPUSHDOWN)"이 BLOB 시스템에서 작동하지 않는다는 것을 완전히 이해합니다.

blob에서 HDI를 사용하기 위해 외부 데이터 소스를 구성 할 수 있습니까?

전형적인 외부 데이터 소스 구성은 다음과 같습니다

CREATE EXTERNAL DATA SOURCE AzureStorage with ( 
     TYPE = HADOOP, 
     LOCATION ='wasbs://[email protected]', 
     CREDENTIAL = AzureStorageCredential 
); 

내가 그 푸시 컴퓨팅이 작동하지 않습니다만큼 그 WASBS가에서와 같이 생각합니다.

위의 내용을 HDFS로 변경하면 내 HDI 클러스터를 확실히 가리킬 수 있지만 LOCATION은 EXTERNAL TABLE에 대해 어떤 영향을 미칩니 까?

이것이 WASBS에있는 경우 HDFS에서 어떻게 발견 될까요? LOCATION = '/ HdiSamples/HdiSamples/MahoutMovieData /'

분명히 Polybase가 파일을 WASBS에있는 HDI 클러스터로 푸시 다운 계산하도록하는 방법이 있습니다. 그렇지 않다면, Polybase는 HDI를 설치하기위한 가장 일반적이며 권장되는 방법을 지원하지 않습니다.

나는 위의 사항을 고려해야 할 것으로 알고 있으며 어떤 도움을 주시면 감사하겠습니다. 당신이 정말로 그것이 가능하지 않다는 확신이 들면, 그냥 대답하십시오. Azure Blobs에서 작동하는 Polybase가 pushdown 연산을 직접 수행 할 수 없다는 사실을 기억하십시오. 나는 Polybase가 HDI에 연결하고 HDI가 blob에서 계산하도록합니다.

편집

는 HDI와 푸른에서 다음 설정을 고려하십시오.

기본 Hadoop 파일 시스템은 WASBS입니다. 즉, /HdiSamples/HdiSamples/MahoutMovieData/user-ratings.txt와 같은 상대 경로를 사용하면 wasbs : //[email protected]/HdiSamples/HdiSamples/MahoutMovieData/user-ratings.txt로 해석됩니다. .

CREATE EXTERNAL DATA SOURCE HadoopStorage with ( 
     TYPE = HADOOP, 
     LOCATION ='hdfs://172.16.1.1:8020', 
     RESOURCE_MANAGER_LOCATION = '172.16.1.1:8050', 
     CREDENTIAL = AzureStorageCredential 
); 

CREATE EXTERNAL TABLE [user-ratings] (
    Field1 bigint, 
    Field2 bigint, 
    Field3 bigint, 
    Field4 bigint 

) 
WITH ( LOCATION='/HdiSamples/HdiSamples/MahoutMovieData/user-ratings.txt', 
     DATA_SOURCE = HadoopStorage, 
     FILE_FORMAT = [TabFileFormat] 
    ); 

파일에는 Hadoop에 많은 행이 있습니다.

<external_uri>hdfs://172.16.1.1:8020/HdiSamples/HdiSamples/MahoutMovieData/user-ratings.txt</external_uri> 

공지 사항 URI가 절대 경로이며, 외부 데이터를 기반으로 HDFS로 설정 : 아직,이 쿼리는 내가 원격 쿼리 실행 계획을 확인하면 보여줍니다 0

select count(*) from [user-ratings] 

을 반환 출처.

쿼리가 성공하고 HDFS 파일 시스템에없는 파일/경로를 찾고 있으므로 0을 반환합니다. "테이블을 찾을 수 없습니다"는 테이블이없는 경우 반환되지 않습니다. 그건 정상입니다. 나쁜 점은 실제 테이블이 WASBS에 저장되어 있고 행이 많다는 것입니다.

Azoad Blob을 Hadoop 기본 파일 시스템으로 사용하는 경우 Pushdown Compute는 지원되지 않습니다. Azure Blob을 사용하여 저장소가 컴퓨팅과 분리되도록하는 것이 좋습니다. PolyBase가이 설정을 지원하지 않는다는 것을 이해하지 못하지만, 지금은 지원하지 않는 것으로 보입니다.

제가 틀린 경우를 대비하여이 질문을 남겨 둘 것입니다. 나는 정말로 틀리고 싶다.

답변

0

PolyBase에서 모든 hadoop/HDI 클러스터로 계산을 푸시하려면 외부 데이터 소스를 생성하는 동안 RESOURCE_MANAGER_LOCATION을 지정해야합니다. RESOURCE_MANAGER_LOCATION은 SQL 서버에게 MR 작업을 제출할 위치를 알려줍니다.

+0

응답 해 주셔서 감사합니다. 자원 관리자를 설정하는 것은 이전에 시도한 것입니다. 안타깝게도 WASBS가 푸시 다운 계산을 지원하는 설정은 없습니다. 이것은 Azure HDI 설정에서 PolyBase 사용의 심각한 한계입니다. 자세한 내용은 내 편집을 참조하십시오. –