2017-10-19 12 views
0

j'ai les dossiers suivants dans HDFS:En utilisant GroupBy lors de la copie de HDFS à S3 pour fusionner des fichiers dans un dossier

hdfs://x.x.x.x:8020/Air/BOOK/AE/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/AE/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/BH/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/IN/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/IN/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/KW/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/KW/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/ME/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/OM/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/Others/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/QA/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/QA/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/SA/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/BOOK/SA/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/SEARCH/AE/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/SEARCH/AE/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/SEARCH/BH/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/SEARCH/BH/INT/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/SEARCH/IN/DOM/20171001/2017100101 
hdfs://x.x.x.x:8020/Air/SEARCH/IN/INT/20171001/2017100101 

Chaque dossier a près de 50 fichiers dans l'intention it.My est de fusionner tous les fichiers dans un dossier pour obtenir un seul fichier lors de la copie sur S3 à partir de HDFS. La question que j'ai est le regex avec le groupBy option.I essayé et cela ne semble pas fonctionner:

s3-dist-cp --src hdfs:///Air/ --dest s3a://HadoopSplit/Air-merged/ --groupBy '.*/(\w+)/(\w+)/(\w+)/.*' --outputCodec lzo 

La commande fonctionne en soi, mais je ne reçois pas les fichiers dans chaque dossier fusionné en un seul fichier qui me fait croire que le problème est avec mon regex.

Répondre

0

je me suis dit cela moi-même only..the regex correcte est

.*/Air/(\w+)/(\w+)/(\w+)/.*/.*/.* 

et la commande de fusion et de copie est:

s3-dist-cp --src hdfs:///Air/ --dest s3a://HadoopSplit/Air-merged/ --groupBy '.*/Air/(\w+)/(\w+)/(\w+)/.*/.*/.*' --outputCodec lzo