sqoop基本配置与导入导出学习笔记 (Draft)

来源:互联网 发布:淘宝冲量促销什么意思? 编辑:程序博客网 时间:2024/06/14 10:23

 

 注,文档由word粘贴过后格式有错乱,图片也无法显示,稍后会进行调整,并将代码用代码格式显示。

 

 

一.Sqoop介绍及安装

 

 

http://sqoop.apache.org/

文档:http://sqoop.apache.org/docs/1.4.6/index.html

https://dev.mysql.com/downloads/mysql/

 

解压后的环境变量配置:

vi /etc/profile

 

#set sqoop home

SQOOP_HOME=/sqoop-1.4.6

PATH=$SQOOP_HOME/bin:$PATH

 

export SQOOP_HOME PATH

 

 

验证版本,暂时忽略其他因组件不存在而抛出的警告

#sqoop version

 

 

与往常一样,要使sqoop连接到不同的数据库,则需要先加载对应数据库的jar包才行。

放在$SQOOP_HOME/lib中

 

 

Mysql:

 

[root@hadoop1setup]# rpm -vih --nodeps mysql-community-libs-compat-5.7.17-1.el5.x86_64.rpm

[root@hadoop1setup]# rpm -vih --nodeps mysql-community-libs-5.7.17-1.el5.x86_64.rpm

[root@hadoop1setup]# rpm -vih mysql-community-client-5.7.17-1.el5.x86_64.rpm

[root@hadoop1setup]# rpm -vih mysql-5.7.17-1.el5.x86_64.rpm

[root@hadoop1setup]# rpm -vih mysql-community-common-5.7.17-1.el5.x86_64.rpm

[root@hadoop1setup]# rpm -vih mysql-community-server-5.7.17-1.el5.x86_64.rpm

 

/etc/rc.d/init.d/mysqldstart|status

servicemysqld start

 

 

 

[root@hadoop1setup]# service mysqld stop

[root@hadoop1setup]# mysqld_safe --skip-grant-tables

 

[root@hadoop1~]# mysql

mysql>use mysql;

mysql>update user set authentication_string=password('root') where user='root';

QueryOK, 0 rows affected, 1 warning (0.00 sec)

Rowsmatched: 1  Changed: 0  Warnings: 1

 

mysql>flush privileges;

QueryOK, 0 rows affected (0.00 sec)

mysql>quit

 

[root@hadoop1~]# mysql -u root -p

mysql>set password=password('Gopro5hero!');

QueryOK, 0 rows affected, 1 warning (0.00 sec)

 

mysql>show databases;

+--------------------+

|Database           |

+--------------------+

|information_schema |

|mysql              |

|performance_schema |

|sys                |

+--------------------+

4rows in set (0.00 sec)

 

 

mysql>select user,host from user;

+-----------+-----------+

|user      | host      |

+-----------+-----------+

|Bond      | localhost |

|mysql.sys | localhost |

|root      | localhost |

+-----------+-----------+

3rows in set (0.00 sec)

 

mysql>update user set host='%' where user='root';

QueryOK, 1 row affected (0.00 sec)

Rowsmatched: 1  Changed: 1  Warnings: 0

 

mysql>flush privileges;

QueryOK, 0 rows affected (0.00 sec)

 

mysql>select user,host from user;

+-----------+-----------+

|user      | host     |

+-----------+-----------+

|root      | %         |

|Bond      | localhost |

|mysql.sys | localhost |

+-----------+-----------+

3rows in set (0.00 sec)

 

 

 

 

mysql>CREATE USER 'Bond'@'localhost' IDENTIFIED BY 'test123';

ERROR1819 (HY000): Your password does not satisfy the current policy requirements

mysql>CREATE USER 'Bond'@'localhost' IDENTIFIED BY 'Gopro5hero!';

QueryOK, 0 rows affected (0.00 sec)

 

mysql>select host,user,authentication_string,password_expired,account_locked fromuser;

+-----------+-----------+-------------------------------------------+------------------+----------------+

|host      | user      | authentication_string                     | password_expired |account_locked |

+-----------+-----------+-------------------------------------------+------------------+----------------+

|localhost | root      |*4F63A43ACD2876BD906F01B56E65F3A06DC9A5A8 | N                | N              |

|localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | N                | Y              |

|localhost | Bond      |*4F63A43ACD2876BD906F01B56E65F3A06DC9A5A8 | N                | N              |

+-----------+-----------+-------------------------------------------+------------------+----------------+

3rows in set (0.00 sec)3 rows in set (0.00 sec)3 rows in set (0.00 sec)

 

 

mysql>delete from user where user = 'Bond';

QueryOK, 1 row affected (0.00 sec)

 

 

mysql>CREATE USER 'Bond'@'localhost' IDENTIFIED BY 'Gopro5hero!';

ERROR1396 (HY000): Operation CREATE USER failed for 'Bond'@'localhost'

mysql>flush privileges;

QueryOK, 0 rows affected (0.00 sec)

 

mysql>CREATE USER 'Bond'@'localhost' IDENTIFIED BY 'Gopro5hero!';

QueryOK, 0 rows affected (0.00 sec)

 

mysql>alter user Bond@localhost identified by 'Gopro5hero!!';

QueryOK, 0 rows affected (0.01 sec)

 

mysql>flush privileges;

QueryOK, 0 rows affected (0.01 sec)

 

 

mkdir–p /usr/local/mysql/data/

chown-R mysql:mysql mysql/

/usr/local/mysql/bin/mysqld-u mysql --datadir=/usr/local/mysql/data

cpsupport-files/mysql.server /etc/init.d/mysql

 

 

二.Sqoop基本使用

 

 

以行为读取单位,并行读取导入。每一行的列之间,有分隔符。

 

 

 

 

Sqoop就是个ETL工具

 

Sqoop help import

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


三.Sqoop导入实战(mysql)

 

Mysql导入到hadoop 的hdfs

 

 

详细操作命令手册http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html

 

sqoopimport --connect jdbc:mysql://hadoop1:3306/pjh -username root -password root--table t1

sqoopimport --connect jdbc:mysql://hadoop1:3306/pjh -username root -P --table t1

 

[root@hadoop1~]# hadoop fs -ls /user/root/t1

[root@hadoop1~]# hadoop fs -rm -R /user/root/t1

 

 

 

 

 

 

 

HIVE数据库回头再看,目前只看hdfs

 

 

sqoopeval --connect jdbc:mysql://hadoop1:3306/pjh \

-username root -P \

--query "select *from t1 where id between 2 and 4"

 

 

#使用warehouse-dir将mysql表t1导入到hdfs指定的父目录中

[root@hadoop1 ~]#hadoop fs -mkdir -p /user/shared

sqoopimport \

--connectjdbc:mysql://hadoop1:3306/pjh -username root -P \

--tablet1 \

--warehouse-dir/user/shared \

--m1 \

--split-by id

#No primary key could be found for table t1. Please specify onewith --split-by or perform a sequential import with '--m 1'

#--m 1 时,表示取消并行,则仅会生成一个文件

#如果使用--split-by id,则select列表中至少要包含id

#如果使用--split-by id,而不指定--m,则系统自动决定生成文件的数量。

 

 

#使用table, columns, where,target-dir 将指定的记录导入到指定目录.

sqoop import \

--connectjdbc:mysql://hadoop1:3306/pjh -username root -P \

--table t1 \

--columns "id,name"\

--where "idbetween '2' and '4'" \

--target-dir /user/shared/t1_q1\

--m 2 \

--split-by id

 

 

#如果使用--m 5 (--num-mappers大于1)做parallel query,则必须同时指定--split-by

#如果结果集行数小于--m 5,则仅会生成一行一文件。

#--append默认追加全部记录,新增文件至hdfs,且不会更改原有文件

sqoopimport \

--connect jdbc:mysql://hadoop1:3306/pjh -username root -P \

--query "select id,name from t1 where id<9 and\$CONDITIONS" \

--target-dir /user/shared/t1_q2 \

--append \

--m 5 \

--split-by id

 

 

 

 

 

使用sqoop是可利用参数文件,则不必手动输入各项参数

 

 

参数文件中可以指定密码文件路径,而密码文件最好放在hdfs上

 

[root@hadoop1~]# echo -n "root" > /root/.password_mysql

[root@hadoop1~]# hadoop fs -mkdir -p /user/hadoop

[root@hadoop1~]# hadoop fs -put /root/.password_mysql /user/hadoop/

[root@hadoop1~]# hadoop fs -chmod 400 /user/hadoop/.password_mysql

 

[root@hadoop1~]# vi sqoop_import.cfg

import

--connect

jdbc:mysql://hadoop1:3306/pjh

--username

root

--password-file

/user/hadoop/.password_mysql

 

 

[root@hadoop1~]# vi sqoop_list_databases.cfg

 

list-databases

--connect

jdbc:mysql://hadoop1:3306/pjh

--username

root

--password-file

/user/hadoop/.password_mysql

 

 

 

[root@hadoop1~]# vi sqoop_list_tables.cfg

list-tables

--connect

jdbc:mysql://hadoop1:3306/pjh

--username

root

--password-file

/user/hadoop/.password_mysql

 

 

 

[root@hadoop1~]#

sqoop --options-file~/sqoop_import.cfg \

--tablet1 \

--target-dir/user/shared/t1_q3 \

--append\

--m1

 

 

 

[root@hadoop1 ~]# sqoop --options-file ~/sqoop_list_databases.cfg

[root@hadoop1 ~]#sqoop --options-file /root/sqoop_list_tables.cfg

 

[root@hadoop1 ~]# hadoopfs -cat /user/shared/t1_q3/*

 

 

 

导入时的分隔符设置

分隔符默认为逗号,但是可以手动指定为其它字符,例如 |

 [root@hadoop1 ~]#

sqoop--options-file /root/sqoop_import.cfg \

--query "selectid,name from t1 where id<6 and \$CONDITIONS" \

--target-dir/user/shared/t1_q4 \

--append \

--m 1 \

--split-by id \

--fields-terminated-by "|"

 

[root@hadoop1~]# hadoopfs -ls /user/shared/t1_q4/

[root@hadoop1~]# hadoop fs -cat /user/shared/t1_q4/*

 

 

 

 

可使用--options-file标定所有参数

[root@hadoop1~]# vi sqoop_i_q5.cfg

import

--connect

jdbc:mysql://hadoop1:3306/pjh

 

--username

root

 

--password-file

/user/hadoop/.password_mysql

 

--query

selectid,name from t1 where id<7 and $CONDITIONS 

##使用--opions-file时,此处无需双引号,$CONDITIONS前也无需正斜杠\

 

--target-dir

/user/shared/t1_q5

 

--split-by

id

 

[root@hadoop1~]# hadoop fs -rm -R /user/shared/t1_q5

[root@hadoop1~]# sqoop --options-file /root/sqoop_i_q5.cfg

 

 

 

 

四.Sqoop增量导入(mysql)

 

The merge tool istypically run after an incremental import with the date-last-modified mode

(sqoop import --incremental lastmodified …)

Note:针对常规的增量update 实际上需要借助merge完成。

 

#初始化导入

[root@hadoop1~]# vi sqoop_i_q6_init.cfg

import

--connect

jdbc:mysql://hadoop1:3306/pjh

 

--username

root

 

--password-file

/user/hadoop/.password_mysql

 

--query

selectid,name,ts from t1 where id<8 and $CONDITIONS 

##使用--opions-file时,此处无需双引号,$CONDITIONS前也无需正斜杠\

 

--target-dir

/user/shared/t1_q6

 

--split-by

id

 

[root@hadoop1~]# hadoop fs -rm -R /user/shared/t1_q6

[root@hadoop1~]# sqoop --options-file /root/sqoop_i_q6_init.cfg

[root@hadoop1~]# hadoop fs -cat /user/shared/t1_q6/*

 

 

 

 

增量导入的3个核心参数:

Argument

Description

--check-column (cols)

Specifies the column to be examined when determining which rows to import. (the column should not be of type CHAR/NCHAR/VARCHAR/VARNCHAR/ LONGVARCHAR/LONGNVARCHAR)   

--incremental (mode)

Specifies how Sqoop determines which rows are new. Legal values for mode includeappendand lastmodified.    

--last-value (value)

Specifies the maximum value of the check column from the previous import.   做增量的非必需参数

 

 

 

#测试--incrementalappend 做insert

[root@hadoop1~]# vi sqoop_i_q6_inc_append.cfg

import

--connect

jdbc:mysql://hadoop1:3306/pjh

 

--username

root

 

--password-file

/user/hadoop/.password_mysql

 

--query

selectid,name,ts from t1 where id<99 and$CONDITIONS 

##使用--opions-file时,此处无需双引号,$CONDITIONS前也无需正斜杠\

 

--target-dir

/user/shared/t1_q6

 

--split-by

id

 

--check-column

ts

 

--incremental

append

#做insert需要使用append

 

 

--last-value

2017-04-0708:38:34.0

##此处指定的值,要与check column具有可比性,将抽取大于该记录的行,等于该值的行不会被抽取,它是决定源记录是否被导入的重要依据。如果不指定--last-value,则会默认追加导入全部的行,等效 --append

 

 

#在导入前,在源表插入一条带有新ts的行,注意query必须要能取到新加的行,导入完成后将仅增加一行。并且会自动打印出下一次导入所需的--last-value值,建议使用sqoop job来自动记录该值达到简化操作的目的(章节6)。

[root@hadoop1 ~]# sqoop --options-file /root/sqoop_q6_inc1_append.cfg

[root@hadoop1 ~]# hadoop fs -cat /user/shared/t1_q6/*

 

 

 

 

#测试--incrementallastmodified 做update

[root@hadoop1 ~]# visqoop_i_q6_inc_lastmodified.cfg

 

import

--connect

jdbc:mysql://hadoop1:3306/pjh

 

--username

root

 

--password-file

/user/hadoop/.password_mysql

 

--query

select id,name,ts fromt1 where id<99 and $CONDITIONS

##此处无需双引号,$CONDITIONS前无需正斜杠\

 

--target-dir

/user/shared/t1_q6

 

--split-by

id

 

 

--check-column

ts

#在使用lastmodified时,--check-column必须是时间戳类型,且必须指定,但是我认为它并未起到任何作用。

 

 

--incremental

lastmodified

 

#--merge-keyor--append is required when using --incremental lastmodified and the outputdirectory exists.

#做update需要使用lastmodified

 

--merge-key

id

#指定合并更新使用的key字段,通常是唯一字段。

 

--last-value

2015-04-0708:38:34.0

#非必需

 

 

 

#在导入前,在源表更新一行name,注意query必须要能取到该行,导入完成后将更新一行name.可以看到分成了两次job完成

[root@hadoop1~]# sqoop --options-file /root/sqoop_q6_inc_lastmodified.cfg

[root@hadoop1 ~]# hadoop fs -cat/user/shared/t1_q6/*

 

  测试结果为何未体现???

 

 

在导入前,在源表更新一行name,注意query必须要能取到该行,导入完成后将更新一行name.可以看到分成了两次job完成

[root@hadoop1 ~]# sqoop--options-file /root/sqoop_i_q6_inc_append.cfg

[root@hadoop1~]# hadoop fs -cat /user/shared/t1_q6/*

 

 

 

在hdfs制造一条重复记录 id=2

sqoop import \

--connectjdbc:mysql://hadoop1:3306/pjh -username root -P \

--query "select id,name, '1999-04-0708:38:34.0' from t1 where id=2 and\$CONDITIONS" \

--target-dir/user/shared/t1_q6 \

--append \

--split-by id

 

 

在hdfs制造一条重复记录 id=1

sqoop import \

--connectjdbc:mysql://hadoop1:3306/pjh -username root -P \

--query "select id, 'gopro','1999-04-0708:38:34.0' from t1 where id=1 and\$CONDITIONS" \

--target-dir/user/shared/t1_q6 \

--append \

--split-by id

 

 

 

发现:

i)若源表出现了两行相同的id,而hdfs无重复,会仅取rdbms中较早的一条记录更新至hdfs,且与rdbms源表ts字段无关

ii)若hdfs先后插入重复id的行,而rdbms无重复,在导入之后,hdfs仅会保存较早的一条,与hdfs的ts字段无关。

iii)若hdfs先后插入重复id的行,且rdbms也有该id的重复行,在导入之后,rdbms与hdfs均仅会保留最早的一条,剩下的一行保持数据一致。

 

 

 

 

启动日志记录进程

[root@hadoop1 ~]# /hadoop-2.7.2/sbin/mr-jobhistory-daemon.shstart historyserver

 

使用lastmodified就可以同时做insertupdate但是在sqoop job中要注意,如果仅仅在rdbms增加&更新记录,而不去更新ts,则除了新增行可以被抽取之外,更新的行并不能被捕捉。因此作为RDBMS规范,所有行的变更与新增都需要同时更新时间戳以便于ETL处理。

 

 

 

 

五.Sqoop导入实战(mysql)

 

[root@hadoop1 ~]# sqoop help export

[root@hadoop1 ~]# vi sqoop_export.cfg

export

--connect

jdbc:mysql://hadoop1:3306/pjh

--username

root

--password-file

/user/hadoop/.password_mysql

 

 

#查看hdfs源数据:

[root@hadoop1 ~]# hadoop fs -cat /user/shared/t1_q6/*

 

#由hdfs向rdbms出表,前提是:目标表t2必须先创建,并且字段结构要与导出源一致。如果多次导出,是以追加方式写入。

[root@hadoop1~]#

sqoop --options-file~/sqoop_export.cfg\

--export-dir/user/shared/t1_q6 \

--table t2 \

--input-null-string '\\N'    

 

 

 

–col1,col2,col3

注意:没有被包含在–columns字段必须有默认值,或者允许插入空值,否则rdbms会拒绝sqoop导出的数据,导致作业失败

–export-dir,导出目录,在执行导出的时候,必须指定这个参数,同时需要具备–table或–call参数两者之一,–table是指的导出数据库当中对应的表,–call是指的某个存储过程

–input-null-string、–input-null-non-string,这两参数是可选,如果没有指定第一个参数,对于字符串类型的列来说,“NULL”这个字符串就回被翻译成空值,如果没有使用第二个参数,无论是“NULL”字符串还是说空字符串也好,对于非字符串类型的字段来说,这两个类型的空串都会被翻译成空值

 

 

--update-key,更新标识,即根据某个字段进行更新,例如id,可以指定多个更新标识的,用逗号分隔

--update-mode,有两种模式,一种是updateonly(默认模式),仅仅更新已存在的数据记录,不会插入新纪录,另一种模式是allowinsert,允许插入新纪录

 

Sqoop的Export工具,对应两种语句,一种是Insert语句,如果表当中存在PK约束,且表中已包含数据,此时,导出报错。此时需要用到—update-key和updatemod

 

    如果指定了update-key,那么Sqoop就会修改在数据表中已存在的数据,此时的每一个更行数据记录都会变成一个Update语句,用这个语句去更新目标表中已存在的数据,这是根据–update-key所指定的这个列进行更新的。Update set teacher=”MarsJ” where class_id = 1。

    1)若update-key所指定的字段不是PK字段,若同时updatemod使用updateonly模式时,就仅进行更新,若updatemod使用allowinsert模式,那么实质上就是一个insert操作.

    2)若update-key所指定的字段是PK字段,同时updatemod是allowinsert时,实质上是一个insert & update的操作,若updatemod是updateonly时,实质仅为update操作.

 

 

 

[root@hadoop1 ~]#

sqoop --options-file ~/sqoop_export.cfg \

--export-dir /user/shared/t1_q6 \

--table t2 \

--update-key id \

--update-mode updateonly

#若rdbms存在重复的id(没有pk,通常是不规范的情况),hdfs也存在相同的重复id,更新后rdbms会保留所有的行,并参照hdfs保留最近的一行进行update。

#若rdbms有pk,hdfs存在相同的重复id,更新后并参照hdfs最早的一行进行update。

 

 

 

[root@hadoop1~]#

sqoop--options-file ~/sqoop_export.cfg \

--export-dir/user/shared/t1_q6 \

--tablet2 \

--update-keyid \

--update-modeallowinsert

#如果使用allowinsert,则在rdbms表必须创建pk,否则不会检查id存在性而直接insert。Hdfs存在重复id时,仅会取hdfs中最早的一条记录,更新进rdbms

 

 

 

 

 

六.Sqoop job

 

 

 

 

Sqoop job可以保存所有的配置信息,包括连接字符串与参数。

 

 

 

 

 

 

#为t1_q6的lastmdified增量更新创建sqoop job

#首先需要得到最大的last_value,可以从上一次sqoop输出得到(可以重复跑一次最近一次的sqoop命令,得到当前系统时间戳)

 

[root@hadoop1 ~]# sqoop--options-file /root/sqoop_i_q6_inc_lastmodified.cfg

17/04/11 13:24:37 INFO tool.ImportTool:  --incremental lastmodified

17/04/11 13:24:37 INFO tool.ImportTool:   --check-column ts

17/04/11 13:24:37 INFO tool.ImportTool:   --last-value2017-04-11 13:23:55.0

17/04/11 13:24:37 INFO tool.ImportTool: (Consider saving thiswith 'sqoop job --create')

 

 

[root@hadoop1~]# hadoop fs -cat /user/shared/t1_q6/*

 

[root@hadoop1 ~]# sqoopjob --create job1 -- --options-file /root/sqoop_i_q6_inc_lastmodified.cfg

[root@hadoop1 ~]# sqoop job –list

[root@hadoop1 ~]# sqoop job --show job1

[root@hadoop1 ~]# sqoop job --exec job1

17/04/11 13:36:08 INFO tool.ImportTool: Saving incrementalimport state to the metastore

17/04/11 13:36:08 INFO tool.ImportTool: Updateddata for job: job1

 

#执行完job1后,再去查看它的定义,会发现last_value已经被自动更新

[root@hadoop1 ~]# sqoop job --show job1

Job: job1

Tool: import

Options:

----------------------------

verbose = false

incremental.last.value = 2017-04-11 13:35:22.0

db.connect.string = jdbc:mysql://hadoop1:3306/pjh

 

 

 

 

#在rdbms新增行(具有新的ts字段值),然后直接调用job1,再观察结果

[root@hadoop1 ~]# sqoop job --exec job1

[root@hadoop1 ~]# hadoop fs -cat /user/shared/t1_q6/*

 

 

#也可通过查看.sqoop下的metastore来查看job1的当前定义

[root@hadoop1 ~]# cd .sqoop

[root@hadoop1 .sqoop]# ls -lrt

total 12

-rw-r--r-- 1 root root 5653 Apr 11 13:49 metastore.db.script

-rw-r--r-- 1 root root 419 Apr 11 13:49 metastore.db.properties

 

[root@hadoop1 .sqoop]# more metastore.db.properties

#HSQL Database Engine 1.8.0.10

#Tue Apr 11 13:49:21 CST 2017

hsqldb.script_format=0

runtime.gc_interval=0

sql.enforce_strict_size=false

hsqldb.cache_size_scale=8

readonly=false

hsqldb.nio_data_file=true

hsqldb.cache_scale=14

version=1.8.0

hsqldb.default_table_type=memory

hsqldb.cache_file_scale=1

hsqldb.log_size=200

modified=no

hsqldb.cache_version=1.7.0

hsqldb.original_version=1.8.0

hsqldb.compatible_version=1.8.0

 

[root@hadoop1 .sqoop]# more metastore.db.script

CREATE SCHEMA PUBLIC AUTHORIZATION DBA

CREATE MEMORY TABLE SQOOP_ROOT(VERSION INTEGER,PROPNAMEVARCHAR(128) NOT NULL,PROPVAL VARCHAR(256),CONSTRAINT SQOOP_ROOT_UNQ UNIQUE(VERSION,PROPNAME))

CREATE MEMORY TABLE SQOOP_SESSIONS(JOB_NAME VARCHAR(64) NOTNULL,PROPNAME VARCHAR(128) NOT NULL,PROPVAL VARCHAR(1024),PROPCLASS VARCHAR(32)NOT NULL,C

ONSTRAINT SQOOP_SESSIONS_UNQUNIQUE(JOB_NAME,PROPNAME,PROPCLASS))

CREATE USER SA PASSWORD ""

GRANT DBA TO SA

SET WRITE_DELAY 10

SET SCHEMA PUBLIC

INSERT INTO SQOOP_ROOTVALUES(NULL,'sqoop.hsqldb.job.storage.version','0')

INSERT INTO SQOOP_ROOTVALUES(0,'sqoop.hsqldb.job.info.table','SQOOP_SESSIONS')

INSERT INTO SQOOP_SESSIONS VALUES('job1','sqoop.tool','import','schema')

INSERT INTO SQOOP_SESSIONSVALUES('job1','sqoop.property.set.id','0','schema')

INSERT INTO SQOOP_SESSIONSVALUES('job1','verbose','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','incremental.last.value','2017-04-11 13:47:56.0','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','db.connect.string','jdbc:mysql://hadoop1:3306/pjh','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.output.delimiters.escape','0','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.output.delimiters.enclose.required','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.input.delimiters.field','0','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','hbase.create.table','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','hdfs.append.dir','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.input.delimiters.escape','0','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','accumulo.create.table','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','import.fetch.size','null','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.input.delimiters.enclose.required','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','db.username','root','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','reset.onemapper','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.output.delimiters.record','10','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','import.max.inline.lob.size','16777216','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','hbase.bulk.load.enabled','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','hcatalog.create.table','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','db.clear.staging.table','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','incremental.col','ts','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','codegen.input.delimiters.record','0','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','db.password_mysql.file','/user/hadoop/.password_mysql','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','enable.compression','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','hive.overwrite.table','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','hive.import','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.input.delimiters.enclose','0','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','accumulo.batch.size','10240000','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','hive.drop.delims','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.output.delimiters.enclose','0','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','hdfs.delete-target.dir','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.output.dir','.','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.auto.compile.dir','true','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','db.query','selectid,name,ts from t1 where id<99 and $CONDITIONS','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','relaxed.isolation','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','mapreduce.num.mappers','4','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','accumulo.max.latency','5000','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','import.direct.split.size','0','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.output.delimiters.field','44','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','export.new.update','UpdateOnly','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','incremental.mode','DateLastModified','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','hdfs.file.format','TextFile','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','codegen.compile.dir','/tmp/sqoop-root/compile/eb4331b0d50336a1ed2a6c3c679460f3','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','direct.import','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','db.split.column','id','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','hdfs.target.dir','/user/shared/t1_q6','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','hive.fail.table.exists','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','merge.key.col','id','SqoopOptions')

INSERT INTO SQOOP_SESSIONSVALUES('job1','db.batch','false','SqoopOptions')

INSERT INTO SQOOP_SESSIONS VALUES('job1','rpc.engine.org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolPB','org.apache.hadoop.ipc.ProtobufRpcEng

ine','config')

INSERT INTO SQOOP_SESSIONSVALUES('job1','sqoop.job.storage.implementations','com.cloudera.sqoop.metastore.hsqldb.HsqldbJobStorage,com.cloudera.sqoop.

metastore.hsqldb.AutoHsqldbStorage','config')

INSERT INTO SQOOP_SESSIONSVALUES('job1','mapreduce.client.genericoptionsparser.used','true','config')

[root@hadoop1 .sqoop]#

 

 

 

 

 

 

 

 

 

 

0 0