hive数据库怎么建表和数据装载

hive数据库怎么建表和数据装载,第1张

楼主说的是Hive,不是HBase。从Oracle里面头导出数据为平面文件后,导入HDFS里面。Hive里面的表结构是要自己手工定的。

建表可以自己写个小程序实现,根据oracle字典表和hive的建表规则,每个地方使用hive的情景不同,建表也不同。数据装载可以用sqoop来实现。

你可以安装下SQOOP,注意这个跟HADOOP的版本要对应的,不然会出现一些问题。以下是我项目用到的例子,不过我有个更高级的方法,只需配到表就行了,就是写个JAVA程序,然后自动生成对应的脚本,再执行就可以了。转载,仅供参考。

[参考 link ]

[参考 link ]

[参考 link ]

[参考 link ]

这种表也被称作Internal Table这是Hive中的默认的类型.如果你在创建表的时候没有指明Managed或者External,那么默认就会给你创建Managed Table。

Managed Table的数据,会存放在HDFS中的特定的位置中,通常是/user/hduser/hive/warehouse当然,也不一定,看你的Hive的配置文件中是如何配置的。

External Table特别适用于想要在Hive之外使用表的数据的情况.当你删除External Table时,只是删除了表的元数据,它的数据并没有被删除。

分隔符设置开始语句

设置字段与字段之间的分隔符

设置一个复杂类型(array,struct)字段的各个item之间的分隔符

设置一个复杂类型(Map)字段的key value之间的分隔符

设置行与行之间的分隔符

TEXTFILE

SEQUENCEFILE

RCFILE

ORCFILE

hivesql synctab和hivesql sql一样支持上述日期限定功能。

此外,还提供了两个附加的功能(也很有用呃)

hivesql loc — 根据关键字查找能够匹配到的hive表或对应的数据路径

hivesql hdfswc — 获取指定数据目录下所有数据的总行数,支持普通文本,TextFile和SequenceFile的压缩格式,类似于linux下的wc -l

以下为一个hive-catalog的iceberg表的所有存在hdfs目录中的文件

包含

1parquet数据文件

2json元数据文件

3avro snapshot文件

4avro manifest文件

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00001parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00003parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00004parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00005parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00006parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00007parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00008parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00009parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00010parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00011parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-319a206d-7ead-415d-9ec8-700c1a49b8c4-00012parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/data/00000-0-79d89118-5069-4877-8332-2a592c887fe3-00001parquet

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00000-f9a42593-ab76-4933-a739-8e10b476fc85metadatajson

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00001-2002be31-0182-4085-9173-aee3e4facc0bmetadatajson

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00002-2c5e9702-a908-43a6-bbe8-0f0c6582e984metadatajson

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00003-3db39d6b-6311-4bdb-9d7b-b56f2df74fb3metadatajson

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00004-a5490f98-4daf-4592-abf1-fdcc408f1b0fmetadatajson

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00005-b13e2c1f-1383-43c3-a53c-832ed8c68fa8metadatajson

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00006-68ce5b89-27fb-421a-8a49-42f383dfc587metadatajson

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00007-b3430d66-c9fb-401c-b800-e2ea4ad70d8dmetadatajson

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/09769592-109f-4f6e-ab46-9b597dacfd43-m0avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/1a49a079-d7cf-41a6-931d-15ad2a44914b-m0avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/1a49a079-d7cf-41a6-931d-15ad2a44914b-m1avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/2b1ddf19-5701-4c0b-ac6a-ea41fdab9c07-m0avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/2b1ddf19-5701-4c0b-ac6a-ea41fdab9c07-m1avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/bf413511-d1cf-407f-bcc9-b6960cde7898-m0avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/bf413511-d1cf-407f-bcc9-b6960cde7898-m1avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/e97d1919-f47d-40c0-9eb6-24bf68f96980-m0avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/e97d1919-f47d-40c0-9eb6-24bf68f96980-m1avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/f0bd795c-6a10-41bc-8f79-437fef1ff5f9-m0avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/f0bd795c-6a10-41bc-8f79-437fef1ff5f9-m1avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/f0bd795c-6a10-41bc-8f79-437fef1ff5f9-m2avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/f0bd795c-6a10-41bc-8f79-437fef1ff5f9-m3avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/f0bd795c-6a10-41bc-8f79-437fef1ff5f9-m4avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/f0bd795c-6a10-41bc-8f79-437fef1ff5f9-m5avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/f0bd795c-6a10-41bc-8f79-437fef1ff5f9-m6avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/f0bd795c-6a10-41bc-8f79-437fef1ff5f9-m7avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/snap-1289984099921389549-1-1a49a079-d7cf-41a6-931d-15ad2a44914bavro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/snap-3921229567852426700-1-bf413511-d1cf-407f-bcc9-b6960cde7898avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/snap-5386042144404510937-1-09769592-109f-4f6e-ab46-9b597dacfd43avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/snap-7125662397327732785-1-2b1ddf19-5701-4c0b-ac6a-ea41fdab9c07avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/snap-7329471080018208648-1-f0bd795c-6a10-41bc-8f79-437fef1ff5f9avro

hdfs://1017713120:8020/user/hive/dc-warehouse/iceberg_cdc_table/metadata/snap-7377732782289998100-1-e97d1919-f47d-40c0-9eb6-24bf68f96980avro

以下为iceberg表在hive中的建表语句

REATE EXTERNAL TABLE iceberg_cdc_table (

id string COMMENT 'unique ID',

data string)

ROW FORMAT SERDE

'orgapachehadoophiveserde2lazyLazySimpleSerDe'

STORED AS INPUTFORMAT

'orgapachehadoopmapredFileInputFormat'

OUTPUTFORMAT

'orgapachehadoopmapredFileOutputFormat'

LOCATION

' hdfs://test-hdfs1/user/hive/dc-warehouse/iceberg_cdc_table'

TBLPROPERTIES (

'COLUMN_STATS_ACCURATE'='false',

'metadata_location'=' hdfs://test-hdfs1/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00007-b3430d66-c9fb-401c-b800-e2ea4ad70d8dmetadatajson' ,

'numFiles'='0',

'numRows'='-1',

'previous_metadata_location'=' hdfs://test-hdfs1/user/hive/dc-warehouse/iceberg_cdc_table/metadata/00006-68ce5b89-27fb-421a-8a49-42f383dfc587metadatajson' ,

'rawDataSize'='-1',

'table_type'='ICEBERG',

'totalSize'='0',

'transient_lastDdlTime'='1619089695')

其中metadata_location为当前的元数据文件,查看该文件

其中包含了所有的snapshot信息和所有的元数据文件信息

注意sequence-number和snapshot-id,它们是强关联的,

sequence-number在v2版本的表中会作为标识数据的序列号

读取的时候data文件中过滤掉equility-delete数据的时候是按sequence-number过滤的

就找比data文件snapshot大的equility-delete文件

小文件合并也和入数据checkpoint一样生成新的snapshot

如果入库snapshot是3 然后开始小文件合并 合并过程中入库生成snapshot 4

然后合并完成生成snapshot 5

snapshot5的文件只合并了snapshot3的文件需要对snapshot 4中的equility-delete文件进行过滤 但是因为5比4大就不会过滤了

小文件合并跨了入库的snapshot数据就有问题了

当前的snapshotID和对应的文件,查看该文件snap-7329471080018208648-1-f0bd795c-6a10-41bc-8f79-437fef1ff5f9avro

这其中包含了所有的manifest文件,注意content属性,在ManifestContent 中定义了其意义,0表示新增数据Manifest,1表示删除数据Manifest

查看manifest文件

注意status属性,在ManifestEntry接口中定义了枚举

1表示添加的文件,2表示已经无效需要删除的文件

还有content属性,在FileContent 类中定义了其意义,0表示数据文件,1表示POSITION_DELETES文件,2表示 EQUALITY_DELETES文件

上面的snapshot文件snap-7329471080018208648-1-f0bd795c-6a10-41bc-8f79-437fef1ff5f9avro是最新的snapshot文件,有6个content为0的文件和4个content为1的文件,因为我这里是初始入了100w条cdc数据生成一个data文件,然后经历了4次updata,生成了4个data文件和4个delete文件,最后做了一个文件合并生成一个新的data文件。

我提取了其中对应的parquet文件和其status和content信息,state状态为1的有3个,即只有3个有效的文件,一个是进行小文件合并后生成的文件,两个是之后入库的更新文件,这两个也是一个是DATA文件一个是POSITION_DELETES文件。

而在小文件合并之前则是9个有效文件,5个data文件和4个POSITION_DELETES文件。

1 hive如何通过insert语句将数据插入表中

从文件加载数据进表(OVERWRITE覆盖,追加不需要OVERWRITE关键字)

LOAD DATA LOCAL INPATH 'dim_csl_rule_configtxt' OVERWRITE into table dimdim_csl_rule_config;

--从查询语句给table插入数据

INSERT OVERWRITE TABLE test_h02_click_log PARTITION(dt) select

from stages_h02_click_log where dt='2014-01-22' limit 100;

2 如何将excel中的数据导入hive仓库中

将存放在excel表中的数据如何导入到hive中,首先前提是excel表中数据类型以及长度要和hive仓库中表的字段属性一致,否则会报异常。其次因为建表的时候,已经定义了表的分割符号(row format delimited fields terminated by ','),所以不能直接将excel表格中数据导入的hive仓库中。处理方式如下:

先将excel表中数据另存转化为datacsv格式,转化为csv格式的文件默认就是用“,”进行分割的,可以用notepad++打开datacsv格式查看。然后再讲数据导入到hive仓库中即可。但是执行如下导入语句时,发现报错,显示Wrong file format。

检查以后发现,因为在创建表格时,使用的是RCFILE存储格式

STORED AS INPUTFORMAT 'orgapachehadoophiveqlioRCFileInputFormat'

OUTPUTFORMAT 'orgapachehadoophiveqlioRCFileOutputFormat'

而导入到是TextFile文件格式,所以报错,解决办法建表的格式默认使用TextFile格式即可。

如何将文件转化为rcfile文件格式:

(1)hive 中直接 通过textfile表进行insert转换,比如通过如下将textfile数据导入到rcfile中。

insert overwrite table _RCTable partition(dt='2013-09-30') select p_id,tm,idate,phone from tmp_testp where dt='2013-09-30';

(2)使用mapreduce将普通的文件压缩成RCFile,并且再读取RCFile文件。

3 如何把hive导出到本地的表导入mysql中

MySQL命令行导出数据库

1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录

如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 41\bin

(或者直接将windows的环境变量path中添加该目录)

2,导出数据库:mysqldump -u 用户名 -p 数据库名 >; 导出的文件名

如我输入的命令行:mysqldump -u root -p news > newssql (输入后会让你输入进入MySQL的密码)

(如果导出单张表的话在数据库名后面输入表名即可)

3、会看到文件newssql自动生成到bin文件下

命令行导入数据库:

1,将要导入的sql文件移至bin文件下,这样的路径比较方便

2,同上面导出的第1步

3,进入MySQL:mysql -u 用户名 -p

如我输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)

4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库

5,输入:mysql>use 目标数据库名

如我输入的命令行:mysql>use news;

6,导入文件:mysql>source 导入的文件名;

如我输入的命令行:mysql>source newssql;

4 Hive几种数据导入方式和动态分区,多表插入

常用的的有三种:1从本地文件系统中导入数据到Hive表;2从HDFS上导入数据到Hive表;3在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。

Hive配置:HDFS中Hive数据文件存放目录(启动hive后HDFS自动创建):HDFS: /usr/hive/warehousehadoop fs -mkdir /usr/hive/warehouse 命令创立本地数据存放目录:本地:/home/santiago/data/hive一从本地文件系统中导入数据到Hive表1在hive中建表hive> show databases;OKdefaultTime taken: 1706 seconds, Fetched: 1 row(s)hive> create table guo_test(Name string,String string)> row format delimited> fields terminated by ','> stored as textfile;hive> show tables;OKguo_testTime taken: 0024 seconds, Fetched: 1 row(s)1234567891011122在本地文件建立同类型数据表santi@hdp:~/data/hive$ lshive_testtxtsanti@hdp:~/data/hive$ cat hive_testtxtsanti,you are a zhazha12343导入数据并测试hive>load data local inpath '/home/santi/data/hive/hive_testtxt' into table guo_test;hive> select from guo_test;hive>dfs -ls /usr/hive/warehouse/guo_test;#hadoop fs -ls /usr/hive/warehouseFound 1 itemsdrwxrwxr-x - santiago supergroup 0 2017-01-14 21:13/usr/hive/warehouse/guo_test12345678发现hive-site,xml设置的HDFS文件存储位置中多了guo_test这个文件夹#hadoop fs -ls /usr/hive/warehouse/guo_testFound 1 items-rwxrwxr-x 1 santiago supergroup 24 2017-01-14 21:13/usr/hive/warehouse/guo_test/hive_testtxthive> select from guo_test;OKsanti you are a zhazha12345678在该文件夹中找到了所写入hive数据仓库的文件。[注]本地数据写入成功,但是从本地将数据导入到Hive表的过程中,其实是先将数据临时复制到HDFS的一个目录下(典型的情况是复制到上传用户的HDFS home目录下,比如/home/santi/),然后再将数据从临时目录下移动到对应的Hive表的数据目录里面(临时目录不保留数据)。

二从HDFS文件系统中导入数据到Hive表1在HDFS文件系统上建立数据文件hdfs上没有vim命令,则需要将本地数据文件手动传入到HDFS上/data/hive# vim data_HDtoHive/data/hive# cat data_HDtoHivedata from, HDFS to Hive #hadoop fs -put /home/santi/data/hive/data_HDtoHive /usr/data/input数据传入# hadoop fs -ls /usr/data/input123452导入数据hive> load data inpath '/usr/data/input/data_HDtoHive' into table guo_test;hive> select from guo_test;OKdata from HDFS to Hivesanti you are a zhazhaTime taken: 0172 seconds, Fetched: 2 row(s)123456数据写入成功数据存hive配置的数据存储位置中。[注]从本地导入数据语句为hive>load data local inpath '/home/santi/data/hive/hive_testtxt' into table guo_test;从HDFS中导入数据的语句为hive> load data inpath '/usr/data/input/data_HDtoHive' into table guo_test;差距在local这个命令这里。

而从HDFS系统上导入到Hive表的时候,数据转移。HDFS系统上查找不到相关文件。

三从HIVE表选取数据插入新的HIVE表命令为create table 表名 as selecr xxx from 表名。hive> create table hivedata_test1> as> select name> from guo_test;hive> select from hivedata_test1;OKdata fromsantiTime taken: 0116 seconds, Fetched: 2 row(s)123456789[注]hive是分区表有稍微区别在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。

比表有a和b两个分区,则对应a=xxx,b=xx对应表的目录为/user/hive/warehouse/a=xxxuser/hive/warehouse/b=xx,所有属于这个分区的数据都存放在这个目录中。hive> create table hivedata_test2(> Name string)> partitioned by> (String string)> ROW FORMAT DELIMITED> FIELDS TERMINATED BY ','> STORED AS TEXTFILE;hive> insert into table hivedata_test2> partition(String='best')> select Name> from guo_test;hive> select from hivedata_test2;OKdata from bestsanti bestTime taken: 1549 seconds, Fetched: 2 row(s)# hadoop fs -ls /usr/hive/warehouse/hivedata_test2Found 1 itemsdrwxrwxr-x -santiago supergroup 0 2017-02-14 17:40/usr/hive/warehouse/hivedata_test2/string=best。

5 hive 怎么添加 表注释语法

要添加注释,只需要用单引号'作为注释文字的开头。注释符告诉Visual Basic,忽略这个符号后面的内容,这些内容就是代码段中的注释部分,在代码编辑器中以绿色字符显示。

注释可以和语句在同一行,写在语句的后面,也可占据一整行。

例如:

'在文本框中放欢迎词。

Private Sub mand1_Click()

Text1 Text="Hello" '把文本框Text1的属性设置为Hello。

End Sub

注意,不能在同一行上把注释接在续行符后面。

以上就是关于hive数据库怎么建表和数据装载全部的内容,包括:hive数据库怎么建表和数据装载、HIVE建表、如何获取hive建表语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10199467.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存