首页 > 其他分享 >暑假生活每周总结6

暑假生活每周总结6

时间:2023-07-29 09:12:51浏览次数:45  
标签:总结 name 每周 -- partition 暑假 TABLE col select

本周进行了大数据操作数据库的操作:

创建数据库:

CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION 'path'] [COMMENT database_comment];
  • IF NOT EXISTS,如存在同名数据库不执行任何操作,否则执行创建数据库操作

  • [LOCATION],自定义数据库存储位置,如不填写,默认数据库在HDFS的路径为:/user/hive/warehouse

  • [COMMENT database_comment],可选,数据库注释

删除数据库:

DROP DATABASE [IF EXISTS] db_name [CASCADE];
  • [IF EXISTS],可选,如果存在此数据库执行删除,不存在不执行任何操作

  • [CASCADE],可选,级联删除,即数据库内存在表,使用CASCADE可以强制删除数据库

选择数据库:

USE db_name;
  • 选择数据库后,后续SQL操作基于当前选择的库执行

  • 如不使用use,默认在default库执行如果想要切换为default数据库可使用 USE DEFAULT;

基础建表:

CREATE [EXTERNAL] TABLE tb_name
    (col_name col_type [COMMENT col_comment], ......)
    [COMMENT tb_comment]//表注释
    [PARTITIONED BY(col_name, col_type, ......)]//分区
    [CLUSTERED BY(col_name, col_type, ......) INTO num BUCKETS]//分桶
    [ROW FORMAT DELIMITED FIELDS TERMINATED BY '']//指定分隔符
    [LOCATION 'path']//指定路径
  • [EXTERNAL],外部表,需搭配
  • [ROW FORMAT DELIMITED FIELDS TERMINATED BY '']指定列分隔符

  • 外部表示意
    CREATE EXTERNAL TABLE test_ext(id int) COMMENT 'external table' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 'hdfs://node1:8020/tmp/test_ext';
  • [COMMENT tb_comment]表注释,可选
  • `[PARTITIONED BY(col_name, col_type, ......)]`基于列分区
  • 分区表示意
    CREATE TABLE test_ext(id int) COMMENT 'partitioned table' PARTITION BY(year string, month string, day string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

  • `[CLUSTERED BY(col_name, col_type, ......)]`基于列分桶
  • 分桶示意   CREATE TABLE course (c_id string,c_name string,t_id string) CLUSTERED BY(c_id) INTO 3 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

基于其他表创建表

CREATE TABLE tbl_name LIKE other_tbl;

基于查询结果建表

CREATE TABLE tbl_name AS SELECT ...;

删除表

DROP TABLE tbl;

修改表

重命名

ALTER TABLE old RENAME TO new;

修改属性:

ALTER TABLE tbl SET TBLPROPERTIES(key=value);
-- 常用属性
("EXTERNAL"="TRUE") -- 内外部表,TRUE表示外部表
('comment' = new_comment) -- 修改表注释

更多属性进入https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-listTableProperties

分区操作

创建分区表

-- 分区表示意
CREATE TABLE test_ext(id int) COMMENT 'partitioned table' PARTITION BY(year string, month string, day string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

添加分区

ALTER TABLE tablename ADD PARTITION (partition_key='partition_value', ......);

修改分区值

ALTER TABLE tablename PARTITION (partition_key='old_partition_value') RENAME TO PARTITION (partition_key='new_partition_value');

删除分区

ALTER TABLE tablename DROP PARTITION (partition_key='partition_value');

加载数据

LOAD DATA [LOCAL] INPATH 'path' INTO TABLE tbl PARTITION(partition_key='partition_value');
INSERT (OVERWRITE | INTO) TABLE tbl PARTITION(partition_key='partition_value') SELECT ... FROM ...;

分桶操作

创建表

CREATE TABLE course (c_id string,c_name string,t_id string) 
    [PARTITION(partition_key='partition_value')] 
    CLUSTERED BY(c_id) INTO 3 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
  • CLUSTERED BY(col) 指定分桶列

  • INTO 3 BUCKETS,设定3个桶

数据加载:

INSERT (OVERWRITE | INTO) TABLE tbl 
    [PARTITION(partition_key='partition_value')] 
    SELECT ... FROM ... CLUSTER BY(col);

数据加载

LOAD DATA

将数据文件加载到表

LOAD DATA [LOCAL] INPATH 'path' INTO TABLE tbl [PARTITION(partition_key='partition_value')];    -- 指定分区可选

INSERT SELECT

将其它表数据,加载到目标表

INSERT (OVERWRITE | INTO) TABLE tbl 
    [PARTITION(partition_key='partition_value')]         -- 指定分区,可选
    SELECT ... FROM ... [CLUSTER BY(col)];                -- 指定分桶列,可选

数据导出

INSERT OVERWRITE SELECT

INSERT OVERWRITE [LOCAL] DIRECTORY ‘path’                 -- LOCAL可选,带LOCAL导出Linux本地,不带LOCAL导出到HDFS
    [ROW FORMAT DELIMITED FIELDS TERMINATED BY '']        -- 可选,自定义列分隔符
    SELECT ... FROM ...;

查询语句与之前学的相似。

sampling采样

# 随机桶抽取, 分配桶是有规则的
# 可以按照列的hash取模分桶
# 按照完全随机分桶
-- 其它条件不变的话,每一次运行结果一致
select username, orderId, totalmoney FROM itheima.orders 
    tablesample(bucket 3 out of 10 on username);
    
-- 完全随机,每一次运行结果不同
select * from itheima.orders 
    tablesample(bucket 3 out of 10 on rand());
    


# 数据块抽取,按顺序抽取,每次条件不变,抽取结果不变
-- 抽取100条
select * from itheima.orders
    tablesample(100 rows);
    
-- 取1%数据
select * from itheima.orders
    tablesample(1 percent);
    
-- 取 1KB数据
select * from itheima.orders
    tablesample(1K);

函数

数值、集合、转换、日期函数

-- 查看所有可用函数
show functions;
-- 查看函数使用方式
describe function extended count;
-- 数值函数
-- round 取整,设置小数精度
select round(3.1415926);        -- 取整(四舍五入)
select round(3.1415926, 4);        -- 设置小数精度4位(四舍五入)
-- 随机数
select rand();                    -- 完全随机
select rand(3);                    -- 设置随机数种子,设置种子后每次运行结果一致的
-- 绝对值
select abs(-3);
-- 求PI
select pi();

-- 集合函数
-- 求元素个数
select size(work_locations) from test_array;
select size(members) from test_map;
-- 取出map的全部key
select map_keys(members) from test_map;
-- 取出map的全部value
select map_values(members) from test_map;
-- 查询array内是否包含指定元素,是就返回True
select * from test_array where ARRAY_CONTAINS(work_locations, 'tianjin');
-- 排序
select *, sort_array(work_locations) from test_array;


-- 类型转换函数
-- 转二进制
select binary('hadoop');
-- 自由转换,类型转换失败报错或返回NULL
select cast('1' as bigint);

-- 日期函数
-- 当前时间戳
select current_timestamp();
-- 当前日期
select current_date();
-- 时间戳转日期
select to_date(current_timestamp());
-- 年月日季度等
select year('2020-01-11');
select month('2020-01-11');
select day('2020-01-11');
select quarter('2020-05-11');
select dayofmonth('2020-05-11');
select hour('2020-05-11 10:36:59');
select minute('2020-05-11 10:36:59');
select second('2020-05-11 10:36:59');
select weekofyear('2020-05-11 10:36:59');
-- 日期之间的天数
select datediff('2022-12-31', '2019-12-31');
-- 日期相加、相减
select date_add('2022-12-31', 5);
select date_sub('2022-12-31', 5);

 

标签:总结,name,每周,--,partition,暑假,TABLE,col,select
From: https://www.cnblogs.com/syhxx/p/17589274.html

相关文章

  • 七月二十八日总结
    早上8点起来洗漱吃饭康复训练。中午吃晚饭午休一会写大道至简读后感,学习java晚上吃完晚饭洗漱,准备睡觉。今天读后感写了一部分,明天继续,同时康复训练。保持早睡,养成良好的作息习惯。......
  • 快乐暑假第五周
    本周完成了hadoop中hdfs的最后操作,对于yarn也是学习完毕。YARN(YetAnotherResourceNegotiator,又一个资源调度器)是ApacheHadoop生态系统的一部分,用于管理和调度大数据处理作业的资源。下面是对YARN核心架构的基本解释:YARN的核心架构由两个主要组件组成:ResourceManager(资源管理......
  • 7.27 总结
    周四上午去看电影《长安三万里》,大概就是讲的高适的一生,其中也贯穿了和李白交往的全部,还有一些重要人物,两个多小时的电影,从年少到暮年,更加清楚的了解了当时高适和李白之间的珍贵友谊,也更加理解了他们作名诗时的心境,真的会被触动,很感动。下午回来教妹妹英语,然后睡觉,晚上看java。......
  • 「闲话」NOI 2023 比赛总结
    Day1打开题面,看到两道计数题,有点小惊讶——根据以往的题目类型看,NOI在一天中出现两道计数类型的题目确实比较罕见。不过冷静了一下,也许这也不是坏事。毕竟数数题是我很擅长的题目。但在NOI以后我意识到并不是这样。读题的时候就觉得这个T1应该非常easy,那就先开T1,越想......
  • 第三周总结
    本周学习总结:本周我主要集中在学习web开发和大数据技术框架方面。以下是我本周的学习内容和时间分配情况:学习内容:Web开发:我学习了HTML、CSS和JavaScript的基础知识,了解了网页开发的基本结构和样式设计原理。我也学习了前端框架,如React和Vue,掌握了它们的基本用法和组件化开......
  • 【入门教程】暑假这么长,花半天时间做个小程序,开学小小的惊艳一下同学
    说明本篇希望用最简单的方式帮助大家上线一个属于自己的实用的小程序,帮助大家体验一个相对较完整的小程序创建、上线流程,步骤会尽可能详尽;文章会更像新手教程,只是引导零基础的同学入个门,所以会尽可能避免让大家自行编辑代码,因此在文中也不会对代码逻辑进行解释,文章中也会附上源......
  • 7.28总结
    上午起床之后刷了会视频,然后就去集上买东西,因为小时候就不愿意赶集,去了哪不知道买啥,给我奶买了白菜种子,然后我就买了一点黄瓜,实在想不到要买啥了就回来了,听说台风要经过河北,这是我第一次剪刀台风能经过河北,下午也不想学习,就玩游戏,玩到晚上想起来大道至简还没看完,读后感只写了一点,......
  • 暑假牛客多校第四场 2023-7-28
    未补完L.WearetheLights算法:反向构造做法:  我们用c_on,r_on,c_off,r_off分别表示倒着推的行灯打开的集合、列灯打开的集合、列灯关闭的集合、行灯关闭的集合。倒着推时,我们先考虑on的情况。为了偷懒,我们就只考虑行的情况,因为列的情况实际上是一样的。  打开......
  • 「赛后总结」暑假集训:20230727 CSP 模拟赛
    「赛后总结」20230727CSP模拟赛点击查看目录目录「赛后总结」20230727CSP模拟赛总结题解T1卷T2简单题T3粉丝T4字符串已经入园两年了吗。好快哦。2023年7月28日20:04:早上就写完了但忘了发了。以下内容均写于「2023年7月27日」。前两天题还没改完呢,有......
  • Unity3D___微信小游戏常用API总结
    获取用户信息游戏初始化WX.InitSDK((code)=>{//打印屏幕信息varsystemInfo=WX.GetSystemInfoSync();Debug.Log($"{systemInfo.screenWidth}:{systemInfo.screenHeight},{systemInfo.windowWidth}:{systemInfo.windowHeight},......