2017-09-18 3 views
0

Linuxに入力ファイルがあり、ヘッダーがあります。このファイルへの読み取り専用アクセスしかないので、このファイルを変更することはできません。HDFSにコピー中に入力ファイルの最初/最後の行を無視するコマンド。

copyFromLocalコマンドを使用して、このファイルをLinuxからHDFSに正常にコピーできます。

しかし、ヘッダーはHDFSファイルに存在してはいけません。ヘッダーを削除するためにLinux入力ファイルを変更するアクセス権がありません。

ファイルをLinuxからHDFSにコピーする際にヘッダーをスキップ/無視する方法はありますか? copyFromLocal -1のようなものinput_file_name hdfs_file_name?

答えて

1

は、HDFSにそれをawkを使用して最初の行を削除し、put

awk 'NR != 1 {print}' file.txt | hdfs dfs -put - hdfs://nn1/user/cloudera 
+0

それは魅力のように働いています。入力ファイルから削除せず、最初の行をHDFSにもコピーしません。最高のコマンド。それほどありがとうございました。しかし最後の行を削除する方法はありますか?私はNR!= $ 1かNR!= -1を与えてチェックしましたが無駄でした。これに関するすべての入力? – JKC

+0

その場合、sedは簡単だと思います。 'sed '1d; $ d' file.txt |を使います。 hdfs dfs -put ... ' – philantrovert

+0

はいsedコマンドが機能しています。 hdfs dfs -putコマンドの後に ' - 'を使用するだけで詳細に説明できますか?私はsedコマンドによって生成され、HDFSに渡される一時的な出力を取っていることを理解しています。しかし、これ以上の他の用途はありますか?私はそのようなことがhadoopファイルシステムコマンドに存在することを知らなかった – JKC

関連する問題