2017-10-20 15 views
0

hadoop fsimage를 사용하여 ETL 프로세스가 올바른 파일 크기로 데이터를 올바르게로드했는지 확인하기 시작했습니다. 필자는 이미지를 분석하여 임팔라를 통해 이미지를 제공합니다. fsimage에 표시된 파일 크기는 2147483647입니다.
hadoop fs -du으로 HDFS를 보면 다른 파일 크기를 얻게됩니다. (파일 크기가 잘못되었습니다.) 왜 fsimage가이 숫자를 보여줄 수 있을까요? 새로운 이미지를 얻고 다시 검색하면 과거에 며칠 째 나타나는지에 관계없이 여전히 값이 올바르지 않습니다.잘못된 파일 크기를 가진 파일 시스템 이미지

편집 : 이미지를 얻기위한 코드는 나에 의해 개발되지 않은 : 나는대로

sudo ssh hostname 'hdfs oiv -p Delimited -i $(ls -t /dfs/nn/current/fsimage_* | grep -v md5 | head -1) -o /dev/stdout 2>/dev/null' | grep -v "/.Trash/" |sed -e 's/\r/\\r/g' | awk 'BEGIN { FS="\t"; OFS="\t" } $0 !~ /_impala_insert_staging/ && ($0 ~ /^\/user\/hive\/warehouse\/cz_prd/ || 
$0 ~ /^\/user\/hive\/warehouse\/cz_tst/) { split($1,a,"/"); db=a[5]; table=a[6]; gsub(".db$", "", table); } db && $10 ~ /^d/ {par=""; for(i=7;i<=length(a);i++) par=par"/"a[i] } db && $10 !~ /^d/ { par=""; for(i=7;i<=length(a) - 1;i++) par=par"/"a[i]; file=a[length(a)] } NR > 1 { print db,table, par, file, $0 }' | hadoop fs -put -f - 
/user/hive/warehouse/cz_prd_mon_ma.db/hive_warehouse_files/fsimage.tsv 

답변

0

바보, 내가 int로 입력 한 SQL 테이블 정의했다.
hadoop fs -cat command으로 파일을 표시 할 때 ok로 표시되어 열을 bigint로 변경 했으므로 크기가 올바르게 표시됩니다.