1つのHDFSフォルダに複数のファイルがあります。 各ファイルを異なるハイブテーブルに読み込み、同じ場所にソースファイルを保存したいとします。ファイルを削除せずにHDFSからハイブにデータをロードする方法
私は、ディレクトリを指す外部テーブルを作成できることはわかっています。
特定のファイルを指す外部テーブルを作成することは可能ですか?
この問題を解決するのにお手伝いできますか?
1つのHDFSフォルダに複数のファイルがあります。 各ファイルを異なるハイブテーブルに読み込み、同じ場所にソースファイルを保存したいとします。ファイルを削除せずにHDFSからハイブにデータをロードする方法
私は、ディレクトリを指す外部テーブルを作成できることはわかっています。
特定のファイルを指す外部テーブルを作成することは可能ですか?
この問題を解決するのにお手伝いできますか?
事前定義された名前のファイルがあらかじめ定義されている場合は、INPUT__FILE__NAME
仮想列に基づいてWHERE句を使用して、複数テーブルのINSERTを試すことができます。
FROM some_db.some_external_table
INSERT INTO table1
SELECT a, b, c
WHERE INPUT__FILE__NAME like '%/gabuzomeu.csv'
INSERT INTO table2
SELECT a, x, d, CAST(z AS FLOAT)
WHERE INPUT__FILE__NAME like '%/wtf.csv'
...
参考:
外部テーブルには、常にそれ自身の場所(フォルダ)を持っています。 hadoop distcp <srcurl> <desturl>
コマンドまたはhdfs dfs -cp ...
コマンドを使用して、ファイルをテーブルの場所にコピーします。参照のためhttps://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#cpを参照