web-dev-qa-db-ja.com

HDFSでファイルを更新する方法

HDFSは1回の書き込みで何度も読み取ります。
HDFSでファイルを更新する場合、それを行う方法はありますか?

前もって感謝します !

9
Raj

オプション1:

既存のファイルに追加するだけの場合

  1. echo "<Text to append>" | hdfs dfs -appendToFile - /user/hduser/myfile.txt OR

  2. hdfs dfs -appendToFile - /user/hduser/myfile.txtを入力し、端末でテキストを入力します。入力が完了したら、「Ctrl + D」を押します

オプション2:

元のファイルをHDFSからローカルファイルシステムに取得し、変更してからHDFSに戻します。

  1. hdfs dfs -get /user/hduser/myfile.txt

  2. vi myfile.txt#または他のツールを使用して変更する

  3. hdfs dfs -put -f myfile.txt /user/hduser/myfile.txt

10
daemon12

行を追加する場合は、別のファイルを配置してファイルを連結する必要があります。

hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile

すでに書き込まれているファイルの一部を変更するには、3つのオプションがあります。

  1. Hdfsからファイルを取得し、ローカルでコンテンツを変更します

    hdfs dfs -copyToLocal /hdfs/source/path /localfs/destination/path

    または

    hdfs dfs -cat /hdfs/source/path | modify...

  2. 処理技術を使用して Map Reduce または Apache Spark として更新すると、結果がファイルのディレクトリとして表示され、古いファイルが削除されます。それが最善の方法です。

  3. NFSまたはFuseをインストールします。どちらも追加操作をサポートします。

    NFSゲートウェイ

    Hadoop Fuse :mountableHDFS。mountコマンドを使用して、HDFSを標準ファイルシステムとして(ほとんどのUnixで)マウントできるようにします。マウントしたら、ユーザーは「ls」、「cd」、「cp」、「mkdir」、「find」、「grep」などの標準Unixユーティリティを使用してhdfsのインスタンスを操作できます。

2
MrElefant