ハイブデータのインポートとエクスポート

1. ハイブのデータインポート

Linux ローカル ファイルとデータ形式:
ここに画像の説明を挿入
ハイブにテーブルを作成します:

create table t_user(
id int
,name string
)
row format delimited
fields terminated by ","
lines terminated by '\n'
stored as textfile;

いくつかの一般的な形式で保存される

1. TextFile: TextFile 形式で保存されたテーブルは、データをテキスト ファイルの形式で保存します。これは、最も一般的に使用されるデフォルトの保存形式です。
2. SequenceFile: SequenceFile 形式で保存されたテーブルは、データ圧縮と効率的な読み取りに適したキーと値のペアの形式でデータを保存します。
3. ORC (Optimized Row Columnar): ORC は、Hive の高性能の列指向ストレージ形式で、データを列に編成し、より高い圧縮率とクエリ パフォーマンスを提供します。
4. Parquet: Parquet は列指向のストレージ形式であり、Hive の一般的なオプションです。高圧縮や述語プッシュダウンなどの最適化をサポートしており、大規模なデータ分析に適しています。
5. Avro: Avro は言語間データシリアル化システムであり、Hive はデータを Avro 形式で保存できます。

ローカルデータをロードする

load data local inpath '/home/hivedata/user.txt' into table t_user ;
-- 如果在into前面加了overwrite就是覆盖之前的数据重新导入数据

HDFS にデータをロードします
* 注: データは
ローカルから HDFS 上の HDFS にアップロードする必要があります
ここに画像の説明を挿入

// 追加添加
load data inpath '/yan/hivedata/user.txt' into table t_user;
//覆盖添加
load data inpath '/yan/hivedata/user.txt' into table t_user;

別のテーブルからターゲットテーブルにデータを挿入します。

create table u1(
id int,
name string
);
insert into u1
(select id ,name from t_user);
# 查询一次插入多个表 ,把from写在前面
from t_user 
insert into u2 select *
insert into u3 select id ,name;

クローンテーブル

-- 把表结构和数据一起复制
create table u4 as select * from t_user;
-- 只复制表结构,只需要使用like 表名即可,不用select
create table u5 like t_user;

ローカル データ インポートと HDFS データ インポートの違い:

本地:将数据copy到hdfs的表目录下
hdfs:将数据剪切到hdfs的表目录下

2. ハイブでのデータのエクスポート

ローカル ファイル システム上のディレクトリにエクスポートする

# 必须加overwrite
insert overwrite local directory '/home/hivedata/out/out1' select * from t_user;
# 在本地Linux系统中,最后一级的out1也是目录

ここに画像の説明を挿入
ここに画像の説明を挿入

hdfs ディレクトリにエクスポートする

-- 比本地少了local
insert overwrite directory '/yan/hivedata/out/out1' select * from t_user;

エクスポートされたデータ ファイルでは、デフォルトのフィールドは区切られておらず、角括弧は hdfs のデフォルトの区切りであり、以前のカンマ区切り文字は消えています。hdfs 上のデータを Linux ローカルにインポートしますここに画像の説明を挿入

hive -e 'select * from zoo.t_user' >> /home/hivedata/out/out2/02
# 02是我建的空文件
# 导出的文件中字段分隔符默认是\t

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_43759478/article/details/131562651