HDFSは1回の書き込みで何度も読み取ります。
HDFSでファイルを更新する場合、それを行う方法はありますか?
前もって感謝します !
オプション1:
既存のファイルに追加するだけの場合
echo "<Text to append>" | hdfs dfs -appendToFile - /user/hduser/myfile.txt
OR
hdfs dfs -appendToFile - /user/hduser/myfile.txt
を入力し、端末でテキストを入力します。入力が完了したら、「Ctrl + D」を押します
オプション2:
元のファイルをHDFSからローカルファイルシステムに取得し、変更してからHDFSに戻します。
hdfs dfs -get /user/hduser/myfile.txt
vi myfile.txt
#または他のツールを使用して変更する
hdfs dfs -put -f myfile.txt /user/hduser/myfile.txt
行を追加する場合は、別のファイルを配置してファイルを連結する必要があります。
hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile
すでに書き込まれているファイルの一部を変更するには、3つのオプションがあります。
Hdfsからファイルを取得し、ローカルでコンテンツを変更します
hdfs dfs -copyToLocal /hdfs/source/path /localfs/destination/path
または
hdfs dfs -cat /hdfs/source/path | modify...
処理技術を使用して Map Reduce または Apache Spark として更新すると、結果がファイルのディレクトリとして表示され、古いファイルが削除されます。それが最善の方法です。
NFSまたはFuseをインストールします。どちらも追加操作をサポートします。
Hadoop Fuse :mountableHDFS。mountコマンドを使用して、HDFSを標準ファイルシステムとして(ほとんどのUnixで)マウントできるようにします。マウントしたら、ユーザーは「ls」、「cd」、「cp」、「mkdir」、「find」、「grep」などの標準Unixユーティリティを使用してhdfsのインスタンスを操作できます。