在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Hive数据如何导入导出mysql

110次阅读
没有评论

共计 4442 个字符,预计需要花费 12 分钟才能阅读完成。

这篇文章给大家分享的是有关 Hive 数据如何导入导出 mysql 的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

Hive 定位:ETL(数据仓库)工具
将数据从来源端经过抽?。╡xtract)、转换(transform)、加载(load)至目的端的工具, 如像:kettle

DML

批量插入 / 批量导入
LOAD DATA [LOCAL] INPATH filepath  [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 …)]
注:filepath 可以是 hdfs 路径或者是 S3 路径,如 hdfs://namenode:9000/user/hive/project/data1
1. 从本地文件导入到表
load data local inpath test.txt  into table test;
2. 从 hdfs 导入到表
load data inpath /home/test/add.txt  into table test;
3. 从表查询中导入到表
insert into table test select id, name, tel from test;
4. 将查询数据导入到多个表
from source_table
insert into table test select id, name, tel from dest1_table select src.* where src.id  100
insert into table test select id, name, tel from dest2_table select src.* where src.id  100
insert into table test select id, name, tel from dest3_table select src.* where src.id  100;
5. 建表时导入
create table test4 as select id, name, tel from test;
指定分隔符导出数据
insert overwrite local directory  /home/hadoop/export_hive  
row format delimited 
fields terminated by  \t  
select * from test;
删除 / 清空
1. 删除 table1 中不符合条件的数据
insert overwrite table table1
select * from table1 where XXXX;
2. 清空表
insert overwrite table t_table1
select * from t_table1 where 1=0;
3. 截断表(注:不能截断外部表)
truncate table table_name;
4. 删除 hdfs 对应的表数据达到清空表(表结构依然存在)
hdfs dfs -rmr /user/hive/warehouse/test
 
注:1 和 2 本质是覆写表来实现清除数据
delete 与 update
在 hive 中默认不支持事务,因此默认不支持 delete 与 update,如果需要支持必须在 hive-site.xml 中配置打开

DDL

库 / 表 / 索引 / 视图 / 分区 / 分桶

数据库

列出 / 创建 / 修改 / 删除 / 查看信息
1. 列出所有数据库
show databases;
2. 创建数据库
create database test;
3. 删除
drop database test;
 
处于安全原因,直接 drop 有数据的数据库会报错,此时需要 cascade 关键字忽略报错删除
drop database if exists test cascade;
4. 查看数据库信息
describe database test;

列出 / 创建 / 修改 / 删除 / 查看信息
1. 列出所有表
 
当前数据库的所有表
show tables;
 
指定数据库的所有表
show tables in db_name;
 
支持正则
show tables  .*s
2. 创建表
create table test
(id int,
a string
)
ROW FORMAT DELIMITED  行分割
FIELDS TERMINATED BY ‘,’  字段分隔符
LINES TERMINATED BY ‘\n’  行分隔符
STORED AS TEXTFILE;  作为文本存储
创建基于正则切分行字段的表
add jar ../build/contrib/hive_contrib.jar;
 
CREATE TABLE apachelog (
host STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
referer STRING,
agent STRING)
ROW FORMAT SERDE org.apache.hadoop.hive.contrib.serde2.RegexSerDe
WITH SERDEPROPERTIES (
input.regex  = ([^]*) ([^]*) ([^]*) (-|//[[^//]]*//]) ([^ /]*|/ [^/]*/ ) (-|[0-9]*) (-|[0-9]*)(?: ([^ /]*|/ [^/]*/ ) ([^ /]*|/ [^/]*/ ))? ,
output.format.string  = %1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s
)
STORED AS TEXTFILE;
3. 修改
加一个新列
ALTER TABLE test ADD COLUMNS (new_col2 INT COMMENT  a comment
 
改表名
ALTER TABLE old_name RENAME TO new_name;
4. 删除
drop table test;
5. 查看信息
 
显示列信息
desc test;
 
显示详细表信息
desc formatted test;

索引

创建索引
CREATE INDEX index_name  
ON TABLE base_table_name (col_name, …)  
AS  index.handler.class.name
 
如:DROP INDEX index_name ON table_name  
 
重建索引
ALTER INDEX index_name ON table_name [PARTITION (…)] REBUILD 
 
如:alter index index1_index_test on index_test rebuild; 
 
删除索引
DROP INDEX index_name ON table_name  
 
列出索引
show index on index_test;

视图

CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_comment], …) ][COMMENT view_comment][TBLPROPERTIES (property_name = property_value, …)] AS SELECT
 
注:hive 只支持逻辑视图,不支持物化视图
? 增加视图
? 如果没有提供表名,视图列的名字将由定义的 SELECT 表达式自动生成
? 如果修改基本表的属性,视图中不会体现,无效查询将会失败
? 视图是只读的,不能用 LOAD/INSERT/ALTER
? 删除视图  DROP VIEW view_name
 

分区(重点)

列出 / 创建 / 修改 / 删除
1. 列出一个表的所有分区
show partitions test;
2. 创建分区表
create table test
(id int,
a string,
)
partitioned by (b string,c int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;
3. 对现有表添加分区
ALTER TABLE test ADD IF NOT EXISTS
PARTITION (year = 2017) LOCATION‘/hiveuser/hive/warehouse/data_zh.db/data_zh/2017.txt’;
4. 删除分区
ALTER TABLE test DROP IF EXISTS PARTITION(year =2017);
5. 加载数据到分区表
LOAD DATA INPATH‘/data/2017.txt’INTO TABLE test PARTITION(year=2017);
6. 未分区表数据导入分区表
insert overwrite table part_table partition (YEAR,MONTH) select * from no_part_table;
7. 动态分区指令
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
#set hive.enforce.bucketing = true;
 
开启动态分区后导入数据时可以省略指定分区的步骤
LOAD DATA INPATH‘/data/2017.txt’INTO TABLE test PARTITION(year);

分桶

CREATE TABLE bucketed_user (id INT) name STRING)
CLUSTERED BY (id) INTO 4 BUCKETS;
对于每一个表(table)或者分区,Hive 可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive 也是 针对某一列进行桶的组织。Hive 采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。
把表(或者分区)组织成桶(Bucket)有两个理由:
(1)获得更高的查询处理效率。桶为表加上了额外的结构,Hive 在处理有些查询时能利用这个结构。具体而言,连接两个在(包含连接列的)相同列上划分了桶的表,可以使用 Map 端连接(Map-side join)高效的实现。比如 JOIN 操作。对于 JOIN 操作两个表有一个相同的列,如果对这两个表都进行了桶操作。那么将保存相同列值的桶进行 JOIN 操作就可以,可以大大较少 JOIN 的数据量。
(2)使取样(sampling)更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上试运行查询,会带来很多方便。

感谢各位的阅读!关于“Hive 数据如何导入导出 mysql”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计4442字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 99国产精品一区二区 | 玖玖天堂 | 国产精品久久人妻无码hd毛片 | 亚洲av无码一区二区三区牲色 | 欧美拍拍视频免费大全 | 三级免费网站 | 丰满的人妻hd高清日本 | 人妻aⅴ无码一区二区三区 人妻aⅴ中文字幕 | 精产国品一二三产品蜜桃 | 精品400部自拍视频在线播放 | 国产成人精品一区二区在线小狼 | 国产精品自在自线免费观看 | 人妻人人做人做人人爱 | 欧美专区在线观看 | 午夜伦4480yy私人影院 | 日本视频在线免费观看 | 亚洲欧美18岁网站 | 99久久综合国产精品免费 | 大肉大捧一进一出好爽视频动漫 | 国产成+人+综合+亚洲 欧美 | 久久91这里精品国产2020 | 3atv精品不卡视频 | 日本mv高清在线成人高清 | 婷婷伊人久久大香线蕉av | 久久黄色录像 | 天天综合天天干 | 1769国内精品视频在线观看 | 久久精品国产影库免费看 | 妺妺窝人体色www看人体 | 三级国产三级在线 | 国产精品久久久久7777按摩 | 国产偷窥熟女精品视频 | 91精品酒店情侣在线播放 | 特级黄国产片一级视频播放 | 草草福利影院 | 在线免费视频一区 | 欧美成人精品第一区 | 91视频3p | 四虎国产精品免费久久麻豆 | 在线观看网站国产 | 久久这里只有精品1 |