首页 > 其他分享 >快乐暑假第六周

快乐暑假第六周

时间:2023-08-05 11:55:34浏览次数:43  
标签:... name 分区 第六周 快乐 暑假 表名 table tb

本周完成了对于hive的安装,在上周中出现了问题:当前IP网络不可达,对此,我通过更改IP v4实现了连通网络,对于网络中很多建议都有所采纳,但都无法解决,只是通过在虚拟机中更改IP v4就实现了链接成功。通过此步骤完成了接下来的一系列步骤。

    

 

启动HDFS:

start-dfs.sh

关闭HDFS:

stop-dfs.sh

启动yarn集群:

start-yarn.sh

关闭yarn集群:

stop-yarn.sh

启动yarn历史服务器:

mapred --daemon start historyserver

关闭yarn历史服务器:

mapred --daemon stop historyserver

后台启动hive的metastore服务:

nohup bin/hive --service hiveserver2 >> logs/hiveserver2.log 2>&1 &

启动hive:

bin/hive

 

(1)进入Hive数据库
hive

(2)查看某个数据库
show databases;

(3)进入某个数据库
use 数据库;

默认使用default数据库:

use default;

(4)查看所有的表
show tables;

(5)显示表结构
desc 表名;

(6)查询表数据
select * from 表名;

(7)显示表名的分区
show partitions 表名;

(8)创建数据库
CREATE SCHEMA userdb;

(9)删除数据库
DROP DATABASE IF EXISTS userdb;

DROP SCHEMA userdb;

(10)创建数据表
use xxdb; create table xxx; #内部表

创建一个表,结构与其他一样

create table xxx like xxx;

创建一个表,结构数据与其他一样,相当于复制一个表

create table xxx as xxx;

创建内部表,制定分隔符为tab键

create table tb_name(name1 int,name2 string) row format delimited fields terminated by '\t';


创建外部表,制定分隔符为tab键

create external table tb_name(name1 int,name2 string) row format delimited fields terminated by '\t';

创建分区表
创建分区:分区依据(Id int)

create table tb_name(
id int,
name string
) partitioned by (Id int)
row format delimited fields terminated by '\t';

普通表和分区表区别:有大量数据增加的需要建分区表

内外表转换
内部表转外部表

alter table table-name set TBLPROPROTIES('EXTERNAL'='TURE');

外部表转内部表

alter table table-name set TBLPROPROTIES('EXTERNAL'='FALSE');

删除分区
#注意:若是外部表,则还需要删除文件(hadoop fs -rm -r -f hdfspath)

alter table table_name drop if exists partitions (d='2016-07-01');

(11)加载数据列表
把本地数据装载到数据表,也就是在metastore上创建信息

load data local inpath '/root/a.txt' into table tb_name;

把HDFS上的数据装载到数据表

load data inpath '/target.txt' into table tb_name;

加载数据到分区表必须指明所属分区

load data local inpath './book.txt' overwrite into table tb_name partition (Id = 10);

(12)重命名表名
ALTER TABLE 表名1 RENAME TO 表名2;

(13)删除表
drop table 表名;
或者

drop table if exists 表明;


(14)插入表数据
向有分区的表插入数据
(1)覆盖现有分区数据,如果没有该指定分区,新建该分区,并且插入数据

INSERT OVERWRITE TABLE 库名.表名 PARTITION(dt='2018-09-12',name='Tom', ...)
SELECT ... FROM 库名.表名 where...

(2)向现有的分区插入数据 (之前的数据不会被覆盖)

INSERT INTO TABLE 库名.表名 PARTITION(dt='2018-09-12',name='Tom',...)
SELECT ... FROM 库名.表名 WHERE ...

向无分区的表插入数据
(1) 覆盖原有表里的数据,命令和有分区的表类似,只是去掉后面的PARTITION(dt=’ ‘,name=’ ')

INSERT OVERWRITE TABLE 库名.表名
SELECT ... FROM 库名.表名 where...

(2) 向现有的表插入数据 (之前的数据不会被覆盖)

INSERT INTO TABLE 库名.表名
SELECT ... FROM 库名.表名 WHERE ...

(15)表结构修改
增加字段
alter table table_name add columns(newscol1 int conment '新增');

修改字段
alter table table_name change col_name new_col_name new_type;

删除字段(COLUMNS中只放保留的字段)

alter table table_name replace columns(col1 int,col2 string,col3string);

(16)字段类型
tinyint ,smallint,int,bigint,float,decimal,boolean,string

(17)复合数据类型
struct,array,map

(18)分桶表
对于每一个表或者分区,Hive可以进一步组织成桶,也就是说桶是更为细精度的数据范围划分。
桶的使用一定要设置如下属性:

hive.enforce.bucketing = true;

创建一个桶:

# 按(id)分为4个bucket
create table tb_name (
id int,
name string
) clustered by (id) into 4 buckets
row format delimited fields terminated by ',';

通过子查询插入数据:

insert into tb_name1 select * from tb_name;

(19)创建一个视图
create view v_name as
select table1.column1, table2.column2, table3.column3
where table1.column1 = table2.column2;

标签:...,name,分区,第六周,快乐,暑假,表名,table,tb
From: https://www.cnblogs.com/JJTyyds/p/17604466.html

相关文章

  • 2023.7.31-2023.8.6暑假第四周博客
     2023.7.31一键启动脚本启动:$HADOOP_HOME/sbin/start-yarn.sh• 从 yarn-site.xml 中读取配置,确定 ResourceManager 所在机器,并启动它• 读取 workers 文件,确定机器,启动全部的 NodeManager• 在当前机器启动 ProxyServer (代理服务器)关闭$HADOOP_HOME/sbin/stop-yar......
  • 暑假生活每周总结7
    本周进行了pyhon的学习基础了解frompysparkimportSparkConf,SparkContext#创建sparkconf对象conf=SparkConf().setMaster("local[*]").setAppName("test_app")#基于sparkconf对象创建sparkContext对象sc=SparkContext(conf=conf)##########基本结构 print(rdds.co......
  • 暑假集训D11 2023.8.4 补题
    题意给定一个数组\(a\).询问区间\([l,r]\)是否可以分成\(k\)段,每一段的和都是\(2\)的倍数(偶数)考虑前缀和\(sum\),如果\(sum[i]-sum[j-1]\)是偶数,那么\([j,i]\)一定是\(1\)个合法的区间.因此对于询问\(l,r\),可以统计前缀和的值为偶数的个数,......
  • 暑假集训D10 2023.8.3 补题
    D.DnDDice给出分别有不同个数的\(4,6,8,12,20\)面骰子,\(k\)面骰子的每个面的点数分别是\(1~k\).问用上所有骰子能组合出来的情况的概率从大到小排序,如果有相同的可能性的情况,按任意顺序即可.\(\operatorname{Solution}\)可以将骰子两两合并,合并后的骰子大小为\([m......
  • 暑假训练赛
    A......找ABC就行了第五次比赛-VirtualJudge(vjudge.net)#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<cmath>//#defineintlonglongu......
  • 暑假集训D9 2023.8.2 补题
    A.「EZEC-10」排列排序给你一个长度为\(n\)的排列\(p_1,p_2,\cdots,p_n\)。你需要把它排序。每次可以花区间长度,即\(r-l+1\)的代价,选择排列中的任意一段区间\([l,r]\),并将\([l,r]\)从小到大排序。现在你可以让他进行若干次这个操作,直到\(p\)中元素的值从\(1\)到......
  • 暑假牛客多校第五场 2023-7-31(G、D、H)
    未补完G.GotoPlayMaimaiDX算法:双指针做法:从左到右用两个指针维护一段区间且右指针不断右移,当这个区间满足题目所给的性质,我们取出区间长度,然后再将左指针右移,直到右指针到边界且左指针指到不符合题目的性质的位置结束,期间不断对符合题目性质的区间长度取最小值。code......
  • 23暑假友谊赛 No.3
    A-把你砍成两半!在本地找规律就会发现,当\(a_1\)确定时,\(a_i\)一定是\(a_1\)的倍数。所以答案就是\[\sumC_{\frac{n}{a_1}-1}^{k-1}\]#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintmod=998244353;vector<int>fact,invFact;int......
  • 「赛后总结」暑假 CSP 模拟赛系列
    「赛后总结」暑假CSP模拟赛系列点击查看目录目录「赛后总结」暑假CSP模拟赛系列20230728(fengwuround)T3CountMultisetT4Juliathesnail20230730(ZZ作者round)T3数组T4树20230731(Max_QAQround)T3UT4E20230801(letitdownround)T2神(eldenring)T4动(genshin)20230802(Max_......
  • 牛客暑假多校 2023 第五场
    目录写在前面GDHCEI写在最后写在前面战犯在此。我宣布二周年这首是神。以下按个人向难度排序。G尺取法,右端点单调右移过程中右移调整左端点,使区间内每种数都至少出现1次,4出现至少\(k\)次即可。///*By:Luckyblock*/#include<cmath>#include<cstdio>#include<......