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?

Mengomentari pertanyaan (1)
Larutan

Aku akan mengatakan itu's dengan efisiensi - kepala dapat dengan mudah ditiru oleh pipa output dari hadoop fs -kucing melalui linux kepala komando.

hadoop fs -cat /path/to/file | head

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.

hadoop fs -cat /path/to/file | tail

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.

Komentar (2)

Dimulai dengan versi 3.1.0 yang kita miliki sekarang ini:

Penggunaan: hadoop fs -kepala URI

Display pertama kilobita file ke stdout.

Lihat di sini.

Komentar (0)
hdfs -dfs /path | head

adalah cara yang baik untuk memecahkan masalah.

Komentar (1)

anda dapat mencoba perintah folowing

hadoop fs -cat /path | head -n 

di mana -n bisa di ganti dengan nomor dari catatan ini untuk melihat

Komentar (0)

Di Hadoop v2:

hdfs dfs -cat /file/path|head

Di Hadoop v1 dan v3:

hadoop fs -cat /file/path|head
Komentar (0)