データを.csvファイルにハイブに格納する準備をしています。もちろん、寄木細工のファイル形式が良好であるため、ハイブテーブルは寄木張りの形式にする必要があります。したがって、普通の方法は、フォーマットがtextfile
であるテンポラリテーブルを作成し、ローカルのCSVファイルデータをこのテンポラリテーブルにロードし、最後に同じ構造のパーケットテーブルを作成してinsert into parquet_table values (select * from textfile_table);
を使用することです。一時的なテキストファイルテーブルに頼らず、ローカルcsvファイルを直接ハイキング寄木張りテーブルにロード
しかし、私はこの一時的なtextfileテーブルが必要とは思わない。だから、私の質問は、私はこれらのローカル.csvファイルをハイブの寄せ木馬形式のテーブルに直接ロードする方法、つまり、一時テーブルを使用しないことですか?または、このタスクを達成するための簡単な方法は?
私の場合、データは1時間に1回しか生成されません。したがって、hdfsのテキストスキーマテーブルディレクトリに毎時データを移動してsqlを実行できます:CREATE TABLE parquet_table AS SELECT * FROM textfile_table STORED AS P ARQUET; 1時間後に、hdfsファイルを新しくcomデータで置き換えることができます。これは、1時間ごとにtmpテーブルを削除して再作成するのではありませんか? – wuchang
はい、それは正しいです。しかし、あなたのテキストテーブルが分割されていて、パーティションを追加している場合は、 'SELET * ... 'に表示するために' MSCK REPAIR TABLE textfile_table'を実行する必要があります。 –
このアプローチはまだこれを達成する唯一の方法です構造化テーブルとテンポラリテーブルのステップをスキップして、以前にテキストファイルをロードすることは可能です。 –