,数据文件是part开头的格式,同一个分区的数据用Hive's分桶策略copy语句使用*通配符将原表目录中的所有文件复制到新表路径中,并查看新表的hdfs路径中的数据文件
面对信息时代,如果我们不';不要去关注它,这样我们就可以通过及时补充知识来与时俱进。今天给大家带来一篇关于蜂巢查看表结构和蜂巢查看表结构的文章,相信会给大家带来很大的帮助!
摘要:Hive,Shell
Hive复制表包括两种类型
对于非分区表,如果要将一个表完全复制到另一个表,可以直接使用CREATETABLE…AS语句。例如,将一个表的两个字段和字段的值复制到另一个表
对于已分区表,如果使用CREATETABLE…AS语句,分区将无效,但可以执行而不报错,字段和数据都可以完全复制
。上面有一个分区表,使用dt字段作为分区,使用CREATETABLE…AS复制整个表
检查表的结构和表的数据量没有问题
检查分区,报告表不是分区表。不是已分区表,但表结构中存在原始分区字段dt。此时dt字段的分区函数无效,但数据仍然是
。复制带分区的分区表全名的操作方法需要使用LIKE语句复制到分区信息。具体步骤如下:
第一步,用原表
的表结构和分区信息复制一个空表。接下来,使用hdfs命令操作,将hdfs中原表的存储路径复制到新表的路径中。表的存储路径是一个目录,这个目录下有子目录。每个子目录代表一个分区,数据文件在分区目录下。,数据文件是part开头的格式,同一个分区的数据用Hive's分桶策略
copy语句使用*通配符将原表目录中的所有文件复制到新表路径中,并查看新表
的hdfs路径中的数据文件。此时,虽然新表在对应的仓库目录下有数据文件,但是在Hive客户端中仍然没有发现数据为空,因为新表的元数据中并不存在每个数据分区,数据是按分区目录聚合的。,新表可以';目前找不到分区,所以数据不能';不被自然发现
接下来,修复表的分区元数据,并使用MSCK修复表命令
。从输出的执行过程可以看出,MSCK修复表命令首先检查元数据中是否存在该表的分区信息,然后修复不存在的分区信息,修复后该表可以正常使用
。MSCK修复表的功能是只需要一个命令就可以快速自动地添加(修复)所有分区。如果分区表首先在Hive中构建,,并将数据复制到相应的HDFS目录作为初始化,需要手动添加分区才能使用。如果分区太多,使用ALTERTABLEADDPARTITION是极其不变的。让';让我们做一个测试,看看ALTERTABLEADDPARTITION是否可以完成分区表
的完整复制接下来,手动添加一个分区dt='
。经验证可以完成手动分区,MSCK修复表只自动扫描清单目录中的分区信息(dt='到dt=').如果编写一个Shell脚本,可以实现如下
。运行这个Shell脚本后,可以达到同样的效果,但是这个脚本已经执行了15分钟,需要频繁地启动和关闭Hive进程
。hive语法和sql语法基本相同。让';让我们把它们一个一个地写出来。简单介绍一下存储原理:
hive与hdfs交互,与本地linux交互。,分为本地文件和hdfs文件,要讲区别,底层是在磁盘上,要讲区别,hdfs分布式文件管理系统有自己独特的文件存储结构,也就是可以和分布式文件交互的独特存储方式。linux本地文件是存储在Linux操作系统中的文件,所以hive的功能是在Linux上与Linux本地文件和hdfs文件交互,我可以将本地文件上传到hive文件。当然hive只是一个在hdfs上处理文件的工具,但是hive也有自己独特的文件存储,表结构信息和创建的表信息,都存储在hdfs上的hive文件夹中。
2,语法:
1。将本地文件加载到hive创建的表中(例如:createtableTB_user(IDint,namestring);)你在hive里面创建的是一个结构化的表。,然后是由命令创建的表名:loaddatalocalinpath'路径';成表;
2,将hdfs上的文件加载到hive:loadpath中的数据';HDFS之路';into表创建了表
3。,exportreservetabletohdfs:exporttablenametohdfspath;
4,将hdfs上的表导入hive表:从(hdfs表)导入表(hive表);(导入表TB_kkfrom'/data/a';)当导入的表不存在时,会自动创建。,用于备份或数据传输。表的字段名称与导入的字段名称相同。
5,通过查询hive表中的数据并将查询到的数据导出到本地:insertoverwritelocaldirectory';本地路径';select*fromstudent
6。通过查询hive表中的数据并将查询到的数据导出到HDFS:insertoverwritedirectory';HDFS之路';
select*fromstudent;
7.Insertthequeryresultintothecurrentreservetable:insertthestudentpartitionoftheoverlaytable(month='201708')selectid,namefromstudentwheremonth='201709'
8.Createatableandloadthequerieddata:ifitdoesnotexist,createatabletb_textasaselect*fromtb_text(thesameasakeyword)
.9.Specifytheloadingdatapathbylocationwhencreatingatable:createatabletb_text(idint,namestring)toseparatefields,anduse''Location'Directoryattheendof/hdfs',(记住目录)。
10、创建分区表,可以分别存储不同的数据,查询时只需要查询指定的分区。,可以加快查询效率:创建表TB_text(idint,namestring)partitionedby(monthstring)(//我这里用month作为分区条件。分区字段不能是表中已有的字段,可以视为表的伪列。,不参与实字段)rowformat分隔的字段以';'看一下将数据加载到分区表中的列,以便更好地理解。,localdatainpath'/opt/module/datas/dept.txt'Loadintothetabledefault.dept_partition(month='201709');//Finally,assignpartitionvaluestopseudocolumnfields.,这是分区的文件名。
11、查表结构,这个需要理解清楚:desctb_text查基本表信息,desc格式化tb_text查详细信息。
12、当数据库中存在强制删除数据时,可以作为:dropdatabasedb_hivecascade
13、数据库没有数据时:dropdatabasedb_hive
14、默认创建的表是管理表,也叫内部表。数据和表结构是在一起的,也就是说,当我删除表的时候,底层数据也会随之删除。设计为一个表代表一个数据,以保证数据的安全性。
15、外部表只存储表的元数据和结构信息,而不是表的路径。删除外部表不会删除内部数据,只会删除表的元数据信息,不会影响数据本身,通常作为共享数据使用。Thesyntaxfordesigninganexternaltableis:createanexternaltabletb_text(idint,namestring);
16。创建表时复制表结构:创建表TB_textliketb_text013、外部表和内部表之间的转换:
1,修改内部表为外部表:altertableTB_textsetTBL属性(';外部';='真';);
2.modifytheexternaltableintotheinternaltable:altertableTB_textsetTBLproperties('EXTERNAL'='FALSE');-Requirethecaseofkilovolts,('External'='True')and('External'='False')isafixedwritingmethod.,区分大小写!
语法:
(1)loaddata:表示加载数据
(2)local:表示将数据从本地加载到hive表;否则,将数据从HDFS加载到配置单元表
(3)inpath:表示加载数据的路径
;(4)覆盖:表示表中已有数据;否则,添加
;(5)intotable:指明要加载哪个表。
(6)学生:表示具体表
(7)分区:表示上传到指定分区
案例:
?2)导入本地数据
?3)查看人员表
的数据?2)清除人员表数据;截断表人;
?3)检查清空人员表(没有数据)
?4)将HDFS数据导入人员表
?5)重新查询人员表看数据
?2)导入HDFS,不添加本地
。?3)Fieldsseparatedbyalineformatendingin"t"
Syntax:Inserttablenamequerystatement
Case:
Createanewtable:Ifitdoesn'texist,createthetableperson2(idint,namestring,phonestring);
将人员表中id为1和3的数据插入到人员2表中。
查询人员2表的数据
方法2:进入覆盖
语法:insertoverwritetable表名查询语句
在测试之前再次准备一个表
将数据添加到person6表中。
数据结果
注意:使用insertoverwrite后必须添加表,否则会出现错误
注意
。语法:createtable[如果不存在]表名作为查询语句
描述:根据查询结果创建表(查询结果将添加到新创建的表中)
案例:
根据人员表的结果创建人员3表
查询人员3
注意:使用查询结果创建数据表时,需要添加关键字
。Managetable
Syntax:Createtable[ifitdoesn'texist]Tablename(fieldinformation)Thefieldsseparatedbytherowformatendatthepositionoftheseparatorandloadthedatapath.
案例:加载person表的数据。
查询加载人员数据的地址
创建人员4表,设置人员表的数据路径。
查询人员4表的信息;person4中的所有表数据都来自person表。
外部表
创建管理表t1
向管理表t1添加一条数据
。创建t2并指定t1数据的加载地址
查询t2表
删除t1表
再次查询t2表
验证t1为外部表时,删除t1表。,数据是否会被删除。
重新创建t1表
向t1添加数据3
创建t2(原表已删除)并将其指定为外部表,加载t1的数据路径
。查询t1表结构(验证外部表
是否查询t2数据(带数据2)删除t1表
查询t2表(数据不删除)
。更深入地理解管理表和外部表的区别。
语法:导入表的全新表名来自';由export导出的地址';
查询person_import表
查看主目录,用000000_0文件
生成aaa目录。查看000000_0文件;恰好是person表中的数据。
注意:此处覆盖不是可选的(可选)。此处必须添加覆盖,否则将报告错误。
查看000000_0文件;选项卡用于格式化数据。
查看/aaa/000000_0文件
查看person_bak文件
语法:hive-e"sql语句"输出路径
案例:
查看主目录中的person_bak
。语法:将表格名称导出到';HDFS地址';
案例:将人员表的数据导出到“HDFS/人员2
查看/person2
查看/person2/data/person
总结spark、hive、impala、hdfs的常用命令如下。欢迎补充他们。!
1。Spark的使用:
以通过SecureCRT访问IP地址:10.10.234.198为例:
。enter:ll//查询集群是否配备spark
suMr
。/home/Mr/spark/bin/beeline-u";JDBC:蜂巢2:/大数据198:18000/";先生-p";"
显示数据库;//显示数据库,比如
使用bigmax//使用数据库bigmax
显示表格;//查询目录
descformattedtablename中的所有表;//显示表的详细信息,包括分区、字段、地址等信息
desc表名;//显示表中的字段和分区信息
selectcount(*)fromtablename;//显示表格中的数据量,可以用来判断表格是否为空。
DeletetableTableName//Deletetableinformation
dropbigmax//Deletedatabasebigmax
描述数据库zxvmax//查询数据库zxVMAX信息
创建表
第一步:
Iftheexternaltabledoesnotexist,createtheexternaltablelte_Amaze//createatablenamedlte_Amaze
.(//括号中每个行为表中的字段名及其数据类型用空格分隔
日期时间字符串,
millisecint,
。网络int,
eNodeBIDint,
CIDint,
IMSI字符串,
数据类型int,
AoAint,
ServerRsrpint,
ServerRsrqint,
Taint,
CQi0tinyint,
cqi1tinyint//注意最后一个字段后面没有逗号
]。
partitionbasis(p_datestring,p_hourINT)//Takep_dateandoneo'clockintheafternoonaspartition
行格式分隔的字段以';'/**表中的行结构使用逗号作为分隔符,这与上表中字段以逗号结尾的情况一致*/
存储为文本文件;//保存为文本格式
第二步:添加分区,指定分区的位置
更改表LTE_Amaze添加分区(p_date=-01-27'p_hour=0)位置';/LTE/NDS/Mr/LTE_NDS_CDT_UEdetail/p_date=2015-01-27/p_hour=0';
//在lte_Amaze表中添加分区信息并赋值。
//并使分区对应的目录/lte/nds/mr对应的分区信息如下表lte_nds_cdt_uedetail
第三步:查看添加的结果
显示分区LTE_Amazie//显示表
2的分区信息。hdfs用法:
#suhdfs//切换到hdfs用户,
#HadoopFSLS//查看进程
#cd/hdfs/bin//进入HDFS安装包目录。
Hadoopfs-ls/umtsd/CDT/询问/umtsd/cdt/Documents目录(XY002)
Hadoopfs-mkdir/umtsd/test//在/umtsd目录下创建试验目录
Hadoopfs-put/home/data/u1002。CSV/impala/data/u5002//将home/data/u1002.csv这个文件放到hdfs文件目录上。从put到hdfs的数据文件用逗号(csv)隔开,数据不管是什么类型,直接就是没有双引号和单引号的数据
。Hadoopfs-RM/umtsd/test/test。txt//删除umtsd/测试目录下的测试。文本文件(textfile)文件
Hadoopfs-cat/umtsd/test/test.txt//Viewthecontentsofthetest.txtfileunderumtsd/testdirectory
3Configurationunitoperationanduse:
#sumr//切换到Mr用户
#hive//进入hive查询操作界面
hivehow表;//查询当前创建的所有表
hiveshow数据库;//查询当前创建的数据库
hivedescriptetable_name;{或desctable_name}//查看表格的字段定义和分区信息,区分清楚(在impala下,该命令以字段的形式显示分区信息。,没那么好区分)
Hive显示分区Table_name//查看该表对应数据的已有分区信息。黑斑羚
下没有这个命令。hive退出;//退出hive操作界面
hivedesc格式化table_name查看表格结构、分隔符和其他信息
hivealtertable史策更改ididint修改表的列数据类型//将id数据类型改为int。注意有两个id
。配置单元显示表。*s'根据正条件显示表格(正则表达式),
[Mr@aico~]$exit;退出mr用户界面,进入[root@aico]界面。
impala操作用法:
#sumr//切换到Mr用户
#cdimpala/bin//进入impala安装bin目录
。#/黑斑羚/bin黑斑羚-壳。sh-10。10.234.166/localhost//进入黑斑羚查询操作界面
[10.10.234.166:21000]显示数据库;//查询当前创建的数据库
[10.10.234.166:21000]使用数据库名;//选择使用数据库。默认情况下,使用默认数据库
。[10.10.234.166:21000]显示表格;//查询当前数据库下创建的所有表
[10.10.234.166:21000]描述表名;//查看表中字段的定义,包括分区信息,没有明确区分
[10.10.234.166:21000]描述格式化的table_name//查看表对应的格式化信息,包括分区、数据库、用户创建、创建时间等详细信息。
[10.10.234.166:21000]刷新table_name//刷新以确保元数据是最新的
[10.10.234.166:21000]更改表U107添加分区(报告日期="2013年9月27日",rncid=487)位置'/umts/cdt/
Mremittable/20130927/RNCID=487';//添加分区信息,以及具体表和数据的对应关系
[10。10.234.166:21000]更改表U100删除分区(报告日期="2013年9月25日",rncid=487);//删除现有的分区,数据与表的关联
[10.10.234.166:21000]退出;//退出impala操作界面
[Mr@aicodbin]$impala-shell;Gettheinformationofwelcomeimpala,entertheimpalaqueryoperationinterface
[aicod:21000]andpressthetabbuttontwice.,seetheavailablecommands
tochangetheshellvalueofthedescriptionhelpprofile
.ConnectionDiscardHistoryExitDisplayVersion
CreateExitInsertSelection
tocancelthesetting.descuses
1
toexplainthatHADOOPshouldbestartedbeforetheloadsetentersthereserve,becausethereserveisbasedonHADOOP.。所有的MR计算都在HADOOP上完成。
2
在命令行输入:hive。这时候就可以顺利进入蜂巢了。当然,如果你想直接执行HQL脚本文件,你可以这样做:hive。
-f
https://www.Baidu.com/more/hql.
3
进入hive后,默认一个通用的默认数据库如果切换数据库,您构建的所有表都将位于默认数据库中xxxxx
4
创建数据库的语法是:create
database
database_name;很简单,其实hive和mysql的语法挺像的。为什么??请继续
5
切换数据库时,可以输入:use
database_name;
查看所有数据库时,可以输入:show
。数据库;
查看所有表格时,可以输入:显示
表格
6
查看表格结构时,可以输入:描述
。tab_name;
hive视图表结构和hive视图表结构介绍完毕。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。