2017-03-24 6 views
1

Azure SQLDW에서 Polybase를 사용하여 Cloudera Cluster (Azure의 IaaS로 제공)에서 HDFS의 구분 된 파일에 액세스하려고합니다. I가 BCP, JDBC를 사용할 수 있었다으로 (Azure SQL 데이터웨어 하우스에서 Polybase를 사용하여 Hadoop (Azure IaaS) HDFS 파일에 액세스

CREATE MASTER KEY;

CREATE DATABASE SCOPED CREDENTIAL HadoopUser1 WITH IDENTITY = 'user_name', Secret = 'password';

CREATE EXTERNAL DATA SOURCE MyHadoopCluster WITH (
TYPE = HADOOP,
LOCATION ='hdfs://10...:8020',
RESOURCE_MANAGER_LOCATION = '10.
..:8032',
CREDENTIAL = HadoopUser1 );

CREATE EXTERNAL FILE FORMAT TextFile WITH ( FORMAT_TYPE = DelimitedText, FORMAT_OPTIONS (FIELD_TERMINATOR = ','));

CREATE EXTERNAL TABLE dbo.PolyCloudera ( Id INT NOT NULL, Number INT NOT NULL, ZIPCODE INT NOT NULL) WITH ( LOCATION='/user/hive/warehouse/sample_poly', DATA_SOURCE=MyHadoopCluster, FILE_FORMAT=TextFile);

은 클라우 데라 클러스터 및 푸른 SQLDW 사이에 연결 문제가 없습니다 : 다음과 같은 오류 :

Msg 105019, Level 16, State 1, Line 40 EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_IsDirExist. Java exception message: Call From DB55/10.0.0.59 to 10...:8020 failed on socket timeout exception: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=10.56.140.31/10.56.140.31:8020]; For more details see: http://wiki.apache.org/hadoop/SocketTimeout : Error [Call From DB55/10.0.0.59 to 10.56.140.31:8020 failed on socket timeout exception: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=10.../10...*:8020]; For more details see: http://wiki.apache.org/hadoop/SocketTimeout] occurred while accessing external file.'

나는 다음과 같은 Polybase T-SQL 스크립트를 사용 Cloudera Cluster에서 SQLDW 인스턴스로 데이터 수집) Cloudera 클러스터가 아직 커 버리지 않았습니다. 데이터베이스 범위 자격 증명에 지정된 user_name 및 password는 Cloudera Cluster의 기본 Linux 파일 시스템에 있습니다. 이 문제에 도움을 주시면 감사하겠습니다.

답변

3

Azure의 PolyBase SQL DW는 현재 BLOB 저장소와 Azure Data Lake Store 만 지원합니다. 현재 HDFS에 연결하는 것을 지원하지 않습니다.

-- PolyBase only: Hadoop cluster as data source
-- (on SQL Server 2016) CREATE EXTERNAL DATA SOURCE data_source_name
WITH (
TYPE = HADOOP, LOCATION = 'hdfs://NameNode_URI[:port]'
[, RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:port]' ]
[, CREDENTIAL = credential_name ] ) [;]

:

참고 문서는 HDFS 예 here에 푸른 SQL DW를 언급하지 않는다