2016-09-13 2 views
0

unixODBC/isql을 사용하여 Netezza 서버에서 데이터를 가져 오는 Linux 서버 (Cloudera)에 스크립트가 있습니다. 로컬 파일 시스템에 텍스트 파일을 생성 한 다음 HDFS로 푸시합니다. 이 글은 온다 HDFS에 HDFS, 또는 파이프에 직접 데이터를 연결하는 하나 방법이 있는지unixODBC/isql을 사용하여 HDFS에 데이터로드

export ODBCHOME=; 
export ODBCINI=; 
export LIBPATH=; 
export LD_LIBRARY_PATH=; 

NZ_ODBC_INI_PATH=/home/myuser/sql/; 
export NZ_ODBC_INI_PATH; 
export ODBCINI=/home/myuser/sql/odbc.ini; 

export NZ_HOME=/usr/local/nz; 
export PATH=$PATH:$NZ_HOME/bin64; 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NZ_HOME/lib64; 
export NZ_HOST=myntzserver 

EXTRACT_PATH=/home/myuser/trgt_path/; 
export EXTRACT_PATH; 

cd $EXTRACT_PATH; 

hive_char=`printf "\035\n"` 

isql nettezaServer1 tsg1dev \$\$infadmin11 -v<<EOF 
drop table test_1; 
CREATE EXTERNAL TABLE test_1 (GRP BIGINT, ID BIGINT, DATA CHARACTER V VARYING(10)) USING (DATAOBJECT ("$EXTRACT_PATH/test_1.txt") REMOTESOURCE 'ODBC' delimiter 2); 
insert into test_1 SELECT GRP,ID,DATA FROM SCHEMA1..test_table; 
EOF 

hdfs dfs -put /home/myuser/trgt_path/test_1.txt /user/projects/my_dir/ 

궁금하고있다. 즉, 나는 인해 로컬 파일 시스템에 텍스트 파일을 생성 건너 뛰려면 (소스 테이블은 수백 GB입니다).

sqoop을 사용하지 않는 이유는 프로젝트 요구 사항이 너무 오래 걸리기 때문입니다. 위의 스크립트는 2-3 시간 내에 텍스트 파일을 생성 할 수 있지만 평균 sqoop은 데이터를로드하는 데 7-8을 사용합니다. 우리 팀의 전문가는 시간을 줄이기 위해 명령을 미세 조정하려했지만 행운이 없었습니다.

요약하면, 로컬 파일 시스템을 건너 뛰고이 데이터를 HDFS에 직접로드 할 수 있습니까?

답변

0

Netezza에는 Netezza가 Netezza에서 다양한 형식의 HDFS로 직접 데이터를 이동할 수있는 기타 데이터 소스를 쿼리 할 수있는 Fluid Query가 포함되어 있습니다.

Netentzza에는 소프트웨어 인 타이틀먼트 (Fluid Query)가 포함되어 있지만 관리자는이를 사용하기 전에 설치 및 구성해야합니다.

Here's a quick overview of Fluid Query.

관련 문제