sqoop从sqlserver导入数据的详细操作指令以及hive创建表过程和一些特殊类型的处理方式
1.导入数据到HDFS
#sqoop从sqlserver导入数据到HDFS上,指定存储目录。设置m(mr)数量
bin/sqoop import \
--connect 'jdbc:sqlserver://xx.xx.xx.xxx:1433;database=库名' \
--username 'root' \
--password 'root' \
--table 'bbb' \
--target-dir /user/hive/warehouse/bbb \
--m 1
2.导入数据到Hive
#导入数据到hive中,需要加--hive-import
bin/sqoop import \
--connect 'jdbc:sqlserver:// xx.xx.xx.xxx:1433;database=库名' \
--username 'root' \
--password 'root' \
--table 'bbb' \
--hive-import
3.导入数据自动创建Hive表
#导入数据的时候自动创建hive表,默认为内部表
sqoop import \
--connect 'jdbc:sqlserver:// xx.xx.xx.xxx:1433;database=库名' \
--username 'root' \
--password 'root' \
--table 'bbb' \
--hive-import \
--create-hive-table \
--m 1
4.Hive创建表
--创建外部表chc
create external table t2(
id int
,name string
,hobby array<string>
,add map<String,string>
)
row format delimited
fields terminated by ','
location '/user/bbb'
-- location 这里使用导入到HDFS上的数据目录
5.加载查询数据
-- 导入数据到指定表命令(非必要)
load data local inpath'/user/hive/warehouse/bbb' overwrite into table bbb;
-- 查询指定userid
select * from chc where userid='A6C996A8-86E8-4A4C-AC77-CAE2A866CDD5'
6.创建复杂类型Hive表指定数据分隔符
-- 其他字段指定设置举例
create external table t2(
id int
,name string
,hobby array<string>
,add map<String,string>
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':'
location '/user/t2'
;
-- 原数据---上例
1,xiaoming,book-TV-code,beijing:chaoyang-shagnhai:pudong
2,lilei,book-code,nanjing:jiangning-taiwan:taibei
3,lihua,music-book,heilongjiang:haerbin
外部表和内部表的区别与联系---下篇(有空写)