Tôi cần lặp qua tất cả các tệp csv trong hệ thống tệp Hadoop. Tôi có thể liệt kê tất cả các tập tin trong một thư mục HDFS vớiVòng lặp Bash trên các tệp trong thư mục hdfs
> hadoop fs -ls /path/to/directory
Found 2 items
drwxr-xr-x - hadoop hadoop 2 2016-10-12 16:20 /path/to/directory/tmp
-rwxr-xr-x 3 hadoop hadoop 4691945927 2016-10-12 19:37 /path/to/directory/myfile.csv
và có thể lặp qua tất cả các file trong một thư mục tiêu chuẩn với
for filename in /path/to/another/directory/*.csv; do echo $filename; done
nhưng làm thế nào tôi có thể kết hợp hai? Tôi đã thử
for filename in `hadoop fs -ls /path/to/directory | grep csv`; do echo $filename; done
nhưng điều đó mang lại cho tôi một số vô nghĩa như
Found
2
items
drwxr-xr-x
hadoop
hadoop
2
2016-10-12
....
'fs hadoop -ls/path/to/thư mục | grep csv' sẽ cung cấp cho bạn danh sách các dòng tiêu chuẩn, không nhất thiết chỉ là tên tệp. –
Xem trong câu hỏi khác một cách hay để làm một vòng lặp: http://stackoverflow.com/questions/28685471/loop-through-hdfs-directories –