spring源码怎么看(数据仓库用hive还是hbase)

spring源码怎么看(数据仓库用hive还是hbase)

Hive系列文章

Hive表的基本操作

Hive中的集合数据类型

Hive动态分区详解

hive中orc格式表的数据导入

Java通过jdbc连接hive

通过HiveServer2访问Hive

SpringBoot连接Hive实现自助取数

hive关联hbase表

Hive udf 使用方法

Hive基于UDF进行文本分词

Hive窗口函数row number的用法

数据仓库之拉链表

1. 创建表

create table语句遵从sql语法习惯,只不过Hive的语法更灵活。例如,可以定义表的数据文件存储位置,使用的存储格式等。

createtableifnotexiststest.user1(namestringcomment’name’,salaryfloatcomment’salary’,addressstruct<country:string,city:string>comment’homeaddress’)comment’descriptionofthetable’partitionedby(ageint)rowformatdelimitedfieldsterminatedby’\t’storedasorc;

没有指定external关键字,则为管理表,跟mysql一样,if not exists如果表存在则不做操作,否则则新建表。comment可以为其做注释,分区为age年龄,列之间分隔符是\t,存储格式为列式存储orc,存储位置为默认位置,即参数hive.metastore.warehouse.dir(默认:/user/hive/warehouse)指定的hdfs目录。

2. 拷贝表

使用like可以拷贝一张跟原表结构一样的空表,里面是没有数据的。

createtableifnotexiststest.user2liketest.user1;3. 查看表结构

通过desc [可选参数] tableName命令查看表结构,可以看出拷贝的表test.user1与原表test.user1的表结构是一样的。

hive>desctest.user2;OKnamestringnamesalaryfloatsalaryaddressstruct<country:string,city:string>homeaddressageint#PartitionInformation#col_namedata_typecommentageint

也可以加formatted,可以看到更加详细和冗长的输出信息。

hive>descformattedtest.user2;OK#col_namedata_typecommentnamestringnamesalaryfloatsalaryaddressstruct<country:string,city:string>homeaddress#PartitionInformation#col_namedata_typecommentageint#DetailedTableInformationDatabase:testOwner:hdfsCreateTime:MonDec2116:37:57CST2020LastAccessTime:UNKNOWNRetention:0Location:hdfs://nameservice2/user/hive/warehouse/test.db/user2TableType:MANAGED_TABLETableParameters:COLUMN_STATS_ACCURATE{\”BASIC_STATS\”:\”true\”}numFiles0numPartitions0numRows0rawDataSize0totalSize0transient_lastDdlTime1608539877#StorageInformationSerDeLibrary:org.apache.hadoop.hive.ql.io.orc.OrcSerdeInputFormat:org.apache.hadoop.hive.ql.io.orc.OrcInputFormatOutputFormat:org.apache.hadoop.hive.ql.io.orc.OrcOutputFormatCompressed:NoNumBuckets:-1BucketColumns:[]SortColumns:[]StorageDescParams:field.delim\tserialization.format\t4. 删除表

这跟sql中删除命令drop table是一样的:

droptableifexiststable_name;

对于管理表(内部表),直接把表彻底删除了;对于外部表,还需要删除对应的hdfs文件才会彻底将这张表删除掉,为了安全,通常hadoop集群是开启回收站功能的,删除外表表的数据就在回收站,后面如果想恢复也是可以恢复的,直接从回收站mv到hive对应目录即可。

5. 修改表

大多数表属性可以通过alter table来修改。

5.1 表重命名altertabletest.user1renametotest.user3;5.2 增、修、删分区

增加分区使用命令alter table table_name add partition(…) location hdfs_path

altertabletest.user2addifnotexistspartition(age=101)location’/user/hive/warehouse/test.db/user2/part-0000101’partition(age=102)location’/user/hive/warehouse/test.db/user2/part-0000102′

修改分区也是使用alter table … set …命令

altertabletest.user2partition(age=101)setlocation’/user/hive/warehouse/test.db/user2/part-0000110′

删除分区命令格式是alter table tableName drop if exists partition(…)

altertabletest.user2dropifexistspartition(age=101)5.3 修改列信息

可以对某个字段进行重命名,并修改位置、类型或者注释:

修改前:

hive>descuser_log;OKuseridstringtimestringurlstring

修改列名time为times,并且使用after把位置放到url之后,本来是在之前的。

altertabletest.user_logchangecolumntimetimesstringcomment’salaries’afterurl;

再来看表结构:

hive>descuser_log;OKuseridstringurlstringtimesstringsalaries

time -> times,位置在url之后。

5.4 增加列

hive也是可以添加列的:

altertabletest.user2addcolumns(birthdatecomment’生日’,hobbystringcomment’爱好’);5.5 删除列

删除列不是指定列删除,需要把原有所有列写一遍,要删除的列排除掉即可:

hive>desctest.user3;OKnamestringnamesalaryfloatsalaryaddressstruct<country:string,city:string>homeaddressageint#PartitionInformation#col_namedata_typecommentageint

如果要删除列salary,只需要这样写:

altertabletest.user3replacecolumns(namestring,addressstruct<country:string,city:string>);

这里会报错:

FAILED:ExecutionError,returncode1fromorg.apache.hadoop.hive.ql.exec.DDLTask.Replacingcolumnscannotdropcolumnsfortabletest.user3.SerDemaybeincompatible

这张test.user3表是orc格式的,不支持删除,如果是textfile格式,上面这种replace写法是可以删除列的。通常情况下不会轻易去删除列的,增加列倒是常见。

5.6 修改表的属性

可以增加附加的表属性,或者修改属性,但是无法删除属性:

altertabletableNamesettblproperties(‘key’=’value’);

举例:这里新建一张表:

createtablet8(timestring,countrystring,provincestring,citystring)rowformatdelimitedfieldsterminatedby’#’linesterminatedby’\n’storedastextfile;

这条语句将t8表中的字段分隔符’#’修改成’\t’;

altertablet8setserdepropertyes(‘field.delim’=’\t’);猜你喜欢数仓建模分层理论数仓架构发展史Hive整合HbaseHive中的锁的用法场景数仓建模方法论OLAP大数据技术哪家强?

发表评论

登录后才能评论