scoop导入数据从mysql到hive

来源:互联网 发布:在淘宝上赌徒跳刀 编辑:程序博客网 时间:2024/05/21 10:33

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

0 0
原创粉丝点击