Mengapa tidak ada 'hadoop fs -head' perintah shell?
Sebuah metode cepat untuk memeriksa file pada HDFS adalah dengan menggunakan ekor:
~$ hadoop fs -tail /path/to/file
Ini menampilkan terakhir kilobyte data dalam file, yang sangat membantu. Namun, berlawanan dengan perintah kepala
tidak muncul untuk menjadi bagian dari shell command koleksi. Saya menemukan ini sangat mengejutkan.
Hipotesis saya adalah bahwa sejak HDFS ini dibangun untuk sangat cepat streaming membaca pada file yang sangat besar, ada beberapa akses yang berorientasi pada masalah yang mempengaruhi kepala
. Hal ini membuat saya ragu-ragu untuk melakukan hal-hal untuk mengakses kepala. Apakah ada yang punya jawaban?
57
5
Aku akan mengatakan itu's dengan efisiensi - kepala dapat dengan mudah ditiru oleh pipa output dari hadoop fs -kucing melalui linux kepala komando.
Ini lebih efisien karena kepala akan menutup mendasari aliran setelah nomor yang diinginkan dari garis-garis yang telah output
Dengan menggunakan ekornya dengan cara ini akan jauh kurang efisien - anda'd harus streaming ke seluruh file (semua HDFS blok) untuk menemukan akhir x jumlah baris.
Yang hadoop fs -ekor perintah seperti yang anda perhatikan bekerja pada terakhir kilobita - hadoop efisien dapat menemukan blok terakhir dan melompat ke posisi akhir kilobyte, maka aliran output. Pipa melalui ekor bisa't dengan mudah melakukan hal ini.
Dimulai dengan versi 3.1.0 yang kita miliki sekarang ini:
Lihat di sini.
adalah cara yang baik untuk memecahkan masalah.
anda dapat mencoba perintah folowing
di mana
-n
bisa di ganti dengan nomor dari catatan ini untuk melihatDi Hadoop v2:
Di Hadoop v1 dan v3: