Câu hỏi Làm thế nào để sao chép vài dòng đầu tiên của một tập tin lớn trong hadoop vào một tập tin mới?


Tôi có một tập tin lớn trong hdfs bigfile.txt. Tôi muốn sao chép 100 dòng đầu tiên của nó vào một tập tin mới trên hdfs. Tôi đã thử lệnh sau:

hadoop fs -cat /user/billk/bigfile.txt |head -100 /home/billk/sample.txt

Nó đã cho tôi một lỗi "mèo: không thể ghi dòng đầu ra". Tôi đang trên hadoop 1.

Có cách nào khác để làm điều này không? (lưu ý: sao chép dòng 100 100 thành tệp cục bộ hoặc tệp khác trên hdfs là OK)


9
2018-04-04 01:46


gốc




Các câu trả lời:


Như thế này -

hadoop fs -cat /user/billk/bigfile.txt | head -100 | hadoop -put - /home/billk/sample.txt

Tôi tin rằng "con mèo: không thể viết dòng đầu ra" chỉ vì cái đầu đóng luồng sau khi đọc giới hạn của nó. xem câu trả lời này về cái đầu cho hdfs - https://stackoverflow.com/a/19779388/3438870


11
2018-04-04 02:00



để sao chép mẫu vào cục bộ, hãy sử dụng: hadoop fs -cat / path / to / hdfsfile | đầu -100 | hadoop fs -get đường dẫn / đến / local / sample1 - Adrian
Nếu bạn muốn kết quả địa phương bạn chỉ có thể chuyển hướng nó đến một tập tin chứ không phải là đường ống thông qua hdfs hadoop fs -cat /user/billk/bigfile.txt | head -100> local / sample.txt - Scott
@Scott điều này cũng dẫn đến cat: unable to write to output stream vấn đề - conner.xyz
@ conner.xyz Câu hỏi là làm thế nào để viết 100 dòng đầu tiên của một tập tin trong HDFS vào một tập tin mới trong HDFS. Bạn đúng, tôi tin rằng nó vẫn ném cat: ... lỗi vì đầu dừng luồng đầu ra trước khi luồng tệp kết thúc nhưng nó sẽ ghi 100 dòng vào tệp HDFS mới. - Scott