2017-10-20 57 views
0

J'ai commencé à utiliser hadoop fsimage pour valider notre processus ETL chargé correctement les données (avec une taille de fichier correcte). J'analyse l'image et la rend disponible via Impala. J'ai remarqué que pour tous les fichiers ma requête montre comme incorrectement chargé (la taille de fichier est erronée), la taille de fichier montrée dans le fsimage est 2147483647.
Cependant, si je regarde HDFS avec hadoop fs -du, j'obtiens une taille de fichier différente (et correcte). Des idées pour lesquelles fsimage montrerait ce numéro? Si je reçois une nouvelle image et que je la recherche à nouveau, la valeur est toujours incorrecte, quel que soit le nombre de jours passés dans le passé.Image du système de fichiers avec des tailles de fichier incorrectes

EDIT: Le code pour obtenir l'image n'a pas été développé par moi:

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 

Répondre

0

stupide que je suis, j'avais la définition de table SQL typée int.
Lorsque j'ai affiché le fichier avec hadoop fs -cat command, cela semblait correct, j'ai donc changé la colonne en bigint et maintenant il affiche la taille correctement.