mysql里的表格式:
desc track_log18;CREATE TABLE `track_log18` (
`id` varchar(1000) DEFAULT NULL,
`url` varchar(5000) DEFAULT NULL,
`referer` varchar(5000) DEFAULT NULL,
`keyword` varchar(5000) DEFAULT NULL,
`type` varchar(1000) DEFAULT NULL,
`guid` varchar(1000) DEFAULT NULL,
`pageId` varchar(1000) DEFAULT NULL,
`moduleId` varchar(1000) DEFAULT NULL,
`linkId` varchar(1000) DEFAULT NULL,
`attachedInfo` varchar(1000) DEFAULT NULL,
`sessionId` varchar(1000) DEFAULT NULL,
`trackerU` varchar(1000) DEFAULT NULL,
`trackerType` varchar(1000) DEFAULT NULL,
`ip` varchar(1000) DEFAULT NULL,
`trackerSrc` varchar(1000) DEFAULT NULL,
`cookie` varchar(5000) DEFAULT NULL,
`orderCode` varchar(1000) DEFAULT NULL,
`trackTime` varchar(1000) DEFAULT NULL,
`endUserId` varchar(1000) DEFAULT NULL,
`firstLink` varchar(1000) DEFAULT NULL,
`sessionViewNo` varchar(5000) DEFAULT NULL,
`productId` varchar(1000) DEFAULT NULL,
`curMerchantId` varchar(1000) DEFAULT NULL,
`provinceId` varchar(1000) DEFAULT NULL,
`cityId` varchar(1000) DEFAULT NULL,
`ds` varchar(20) DEFAULT NULL, //ds 在hive表里是分区字段
`hour` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1; //hour在hive表里是分区字段
1 直接导入到hdfs的文件系统
表格式如下:
desc track_log;
id string
url string
。。。
cityid string
ds string
hour string
# Partition Information
# col_name data_type comment
ds string
hour string
jimmy>sqoop import --connect jdbc:mysql://localhost:3306/track_log --username root --password Nokia123
--table track_log18 //mysql的源表
--target-dir /user/hive/warehouse/track_log/ds=20150827/hour=18 //直接到hdfs,
--split-by id //根据id分段生成多个文件
结果自动生成多个文件:
-rw-r--r-- 1 jimmy supergroup 0 2016-12-18 15:17 /user/hive/warehouse/track_log/ds=20150827/hour=18/_SUCCESS
-rw-r--r-- 1 jimmy supergroup 0 2016-12-18 15:17 /user/hive/warehouse/track_log/ds=20150827/hour=18/part-m-00000
-rw-r--r-- 1 jimmy supergroup 13711664 2016-12-18 15:17 /user/hive/warehouse/track_log/ds=20150827/hour=18/part-m-00001
-rw-r--r-- 1 jimmy supergroup 2712180 2016-12-18 15:17 /user/hive/warehouse/track_log/ds=20150827/hour=18/part-m-00002
-rw-r--r-- 1 jimmy supergroup 2655849 2016-12-18 15:17 /user/hive/warehouse/track_log/ds=20150827/hour=18/part-m-00003
-rw-r--r-- 1 jimmy supergroup 2576800 2016-12-18 15:17 /user/hive/warehouse/track_log/ds=20150827/hour=18/part-m-00004
-rw-r--r-- 1 jimmy supergroup 1391853 2016-12-18 15:17 /user/hive/warehouse/track_log/ds=20150827/hour=18/part-m-00005
注意:
A)导入后还要在hive里指定分区地址:
hive》alter table track_log add partition(ds='20150828' ,hour='17') location '/user/hive/warehouse/track_log/ds=20150827/hour=18';
B)hive查询时候有问题 ,比如select id from track_log时候返回多列
2.导入到hive表里
这里表track_log19从track_log拷贝而来,就没有分区了
hive>create table track_log19 as select * from track_log;
表格式如下:
desc track_log19;
OK
id string
...
ds string //ds仍然是字段,但不是分区
hour string //hour仍然是字段,但不是分区
jimmy>sqoop import --connect jdbc:mysql://localhost:3306/track_log --username root --password Nokia123 - -table track_log19 //源表
--hive-import
--hive-table track_log19 //目的表
--hive-overwrite
-m 1 //(最后生成一个文件)
结果(直接到warehouse下目录生成文件track_log19)
drwxrwxrwx - jimmy supergroup 0 2016-12-18 15:17 /user/hive/warehouse/track_log
drwxrwxrwx - jimmy supergroup 0 2016-12-18 15:35 /user/hive/warehouse/track_log19