1. ホーム
  2. hadoop

HiveはHDFSのどこにファイルを保存するのですか?

2023-09-09 03:11:52

質問

私は、Hiveテーブルと、それらが表す実際のHDFSファイル(というかディレクトリ)の間のマッピングを見つける方法を知りたいです。私はテーブルファイルに直接アクセスする必要があります。

HiveはHDFSのどこにファイルを保存するのでしょうか?

どのように解決するのですか?

HDFSのどこに保存されているかは、場所を知っていればかなり簡単に分かります :)

もしあなたが http://NAMENODE_MACHINE_NAME:50070/ のあるページに移動します。 Browse the filesystem のリンクが表示されます。

には $HIVE_HOME/conf ディレクトリに hive-default.xml および/または hive-site.xml を持つ hive.metastore.warehouse.dir プロパティがあります。をクリックした後に移動したいのは、この値です。 Browse the filesystem のリンクをクリックした後に移動したい場所です。

私の場合、それは /usr/hive/warehouse . その場所に移動すると、テーブルの名前が表示されます。テーブル名(これは単なるフォルダですが)をクリックすると、テーブルのパーティションが表示されます。私の場合、現在、パーティションは date . このレベルのフォルダをクリックすると、ファイルが表示されます(パーティションが増えると、さらにレベルが上がります)。このファイルが、実際にHDFS上にデータが保存されている場所です。

私はこれらのファイルに直接アクセスしようとしたことはありませんが、それが可能であると仮定しています。編集しようと考えているのであれば、細心の注意を払ってください。) 私としては、ディスク上の Hive データに直接アクセスすることなく、必要なことを行う方法を考えたいと思います。生データにアクセスする必要がある場合は、Hiveクエリを使用して、その結果をファイルに出力することができます。この場合、ファイルは HDFS . 私はいつもこのようなクエリを実行し、CSVに変換しています。

クエリのデータをディスクに書き込む方法についてのセクションは https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Writingdataintothefilesystemfromqueries

アップデイト

Hadoop 3.0.0 - Alpha 1以降、デフォルトのポート番号に変更があります。 NAMENODE_MACHINE_NAME:50070 は NAMENODE_MACHINE_NAME:9870 に変更されました。 Hadoop 3.xで動作させている場合は、後者を使用してください。 HDFS-9427