本文目录一览:
借助hive快速导数据到hbase(02)
上一篇咱们讲了通过hive映射为hbase表导数据,这儿我么再讲一下通过hive,使用hbase原生jar生成hfile再bulkload到hbase,可以做到hive解偶
本篇适用于适用于数据量较大的场景。
具体的操作步骤如下:
启动hive,添加需要的jar包
创建hive表
注意:
这儿输出格式一定要为:HiveHFileOutputFormat。
/hdfs/hive_hbase/cf是生成的hfile在HDFS上的路径,其中cf为Hbase的family。
可以向hive表中插入数据,然后查看HDFS的该目录下是否有文件
通过bulkload导入到hbase
创建对应的hbase表,其中cf为family,应和上一步对应
执行bulkhead,将数据导入到hbase中
hive数据怎么导入
hive数据怎么导入
(1)、从本地文件系统中导入数据到Hive表; ...
(2)、从HDFS上导入数据到Hive表; ...
(3)、从别的表中查询出相应的数据并导入到Hive表中; ...
(4)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。
hive_建表及导入数据
1、create table 直接建表导入
CREATE TABLE `表名`(
`字段` string)
row format delimited fields terminated by '\t' ---字段之间分隔符
lines terminated by '\n' ---行与行之间分隔符
stored as textfile;
将数据上传到本地,执行导入命令
load data local inpath '本地目录' overwrite into table 表名;
如果导入不进去,可能hadoop和本机不在同一个地方,这时候将文件传到hdfs目录上
hadoop fs -put file /directory
然后执行导入命令:
load data inpath '本地目录' overwrite into table 表名;
2、create table as 建表
create table 表名
row format delimited fields terminated by ',' ---字段之间分隔符
-- ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="|$|") ---多字符分隔的时候使用-hive本地文件数据导入
stored as textfile
as
sql查询语句;
Hive 数据导入 HBase
一、Hive 跑批
1.建表
默认第一个字段会作为hbase的rowkey。
2.导入数据
将userid插入到列key,作为hbase表的rowkey。
二、生成中间的HFile
-Dimporttsv.bulk.output : HFile输出目录
-Dimporttsv.columns:HBase表中的列簇、列名称,注意顺序与Hive表一致。
binlog_ns:hbase_hfile_load_table :binlog_ns 名称空间下的hbase_hfile_load_table表
hdfs://namespace1/apps/hive/warehouse/original_tmp_db.db/hbase_hfile_table : 是Hive 表original_tmp_db.hbase_hfile_table的数据路径-hive本地文件数据导入
ImportTsv 会去读取 Hive表数据目录中的文件,并分析 hbase table 的region 分布, 生成对应region的hfile, 放到 -Dimporttsv.bulk.output目录下-hive本地文件数据导入
三、通过bulkload 加载HFile到HBase表
读取HFile目录下文件,加载到HBase表中
hive中怎么把文本插入表中
1. hive如何通过insert语句将数据插入表中
从文件加载数据进表(OVERWRITE覆盖,追加不需要OVERWRITE关键字)
LOAD DATA LOCAL INPATH 'dim_csl_rule_config.txt' OVERWRITE into table dim.dim_csl_rule_config;
--从查询语句给table插入数据
INSERT OVERWRITE TABLE test_h02_click_log PARTITION(dt) select *
from stage.s_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仓库中。处理方式如下:-hive本地文件数据导入
先将excel表中数据另存转化为data.csv格式,转化为.csv格式的文件默认就是用“,”进行分割的,可以用notepad++打开data.csv格式查看。然后再讲数据导入到hive仓库中即可。但是执行如下导入语句时,发现报错,显示Wrong file format。-hive本地文件数据导入
检查以后发现,因为在创建表格时,使用的是RCFILE存储格式
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.RCFileOutputFormat'
而导入到是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';-hive本地文件数据导入
(2)使用mapreduce将普通的文件压缩成RCFile,并且再读取RCFile文件。
3. 如何把hive导出到本地的表导入mysql中
MySQL命令行导出数据库:
1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录
如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin
(或者直接将windows的环境变量path中添加该目录)
2,导出数据库:mysqldump -u 用户名 -p 数据库名 ; 导出的文件名
如我输入的命令行:mysqldump -u root -p news news.sql (输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)
3、会看到文件news.sql自动生成到bin文件下
命令行导入数据库:
1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)
4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:mysqluse 目标数据库名
如我输入的命令行:mysqluse news;
6,导入文件:mysqlsource 导入的文件名;
如我输入的命令行:mysqlsource news.sql;
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: 1.706 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: 0.024 seconds, Fetched: 1 row(s)1234567891011122.在本地文件建立同类型数据表santi@hdp:~/data/hive$ lshive_test.txtsanti@hdp:~/data/hive$ cat hive_test.txtsanti,you are a zhazha.12343.导入数据并测试hiveload data local inpath '/home/santi/data/hive/hive_test.txt' into table guo_test;hive select * from guo_test;hivedfs -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_test.txthive select * from guo_test;OKsanti you are a zhazha.12345678在该文件夹中找到了所写入hive数据仓库的文件。[注]本地数据写入成功,但是从本地将数据导入到Hive表的过程中,其实是先将数据临时复制到HDFS的一个目录下(典型的情况是复制到上传用户的HDFS home目录下,比如/home/santi/),然后再将数据从临时目录下移动到对应的Hive表的数据目录里面(临时目录不保留数据)。-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 zhazha.Time taken: 0.172 seconds, Fetched: 2 row(s)123456数据写入成功数据存hive配置的数据存储位置中。[注]从本地导入数据语句为hiveload data local inpath '/home/santi/data/hive/hive_test.txt' into table guo_test;从HDFS中导入数据的语句为hive load data inpath '/usr/data/input/data_HDtoHive' into table guo_test;差距在local这个命令这里。-hive本地文件数据导入
而从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: 0.116 seconds, Fetched: 2 row(s)123456789[注]hive是分区表有稍微区别在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: 1.549 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。-hive本地文件数据导入
5. hive 怎么添加 表注释语法
要添加注释,只需要用单引号'作为注释文字的开头。注释符告诉Visual Basic,忽略这个符号后面的内容,这些内容就是代码段中的注释部分,在代码编辑器中以绿色字符显示。
注释可以和语句在同一行,写在语句的后面,也可占据一整行。
例如:
'在文本框中放欢迎词。
Private Sub mand1_Click()
Text1. Text="Hello." '把文本框Text1的属性设置为Hello。
End Sub
注意,不能在同一行上把注释接在续行符后面。