sqoop操作大全

sqoop介绍

Sqoop依赖与hadoop

       数据的一方,存储在hdfs
       底层的数据传输实现map/reduceyarn 只有map任务
因为官网sqoop没有hadoop2.5对应的版本,要根据hadoop的版本进行编译(好像不用对应版本也可以,不过建议最好对应版本)。所以这里使用CDH,选择cdh对应的sqoop版本。比较稳定。去Cloudera的官网下载相应的发布版本号 http;//archive.cloudera.com/cdh5/

sqoop数据的功能完全可以使用spark代替,基于历史原来很多原来的框架或者平台使用sqoop导出导入数据。

Sqoop: SQL to Hadoop

         场景:数据在RDBMS中,我们如何使用Hive或者Hadoop来进行数据分析呢?

                  1)RDBMS ==> Hadoop

                  2)Hadoop ==> RDBMS

         MapReduce   InputFormat OutputFormat

        

         Sqoop:RDBMS和Hadoop之间的一个桥梁

        

Sqoop 1.x: 1.4.7         ---1.0足够日常工作90%场景使用

         底层是通过MapReduce来实现的,而且是只有map没有reduce的

         ruozedata.person  ===> HDFS

                  jdbc              

                 

Sqoop 2.x: 1.99.7          -----不常用   

RDBMS <==> Hadoop   出发点是Hadoop

导入:RDBMS ==> Hadoop

导出:Hadoop ==> RDBMS

1.1   sqoop框架

1.2   sqoop部署

wget http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.7.0.tar.gz

tar -zxvf xxxxx -C ~/app

exportSQOOP_HOME=/home/hadoop/app/sqoop-1.4.6-cdh5.7.0

export PATH=$SQOOP_HOME/bin:$PATH

$SQOOP_HOME/conf/sqoop-env.sh

export HADOOP_COMMON_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0

exportHADOOP_MAPRED_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0

exportHIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0

1.3   sqoop常用操作

拷贝mysql驱动到$SQOOP_HOME/lib

[hadoop@hadoop05 lib]$ cpmysql-connector-java-5.1.46.jar  /home/hadoop/app/sqoop/lib/

sqoop导入

sqoop list-tables \

--connectjdbc:mysql://localhost:3306/ruozedata_basic03 \

--username root --password root

1.3.1 sqoop导入mysql-->hdfs

RDBMS ==> HDFS

sqoop import \

--connect jdbc:mysql://localhost:3306/sqoop\

--username root --password root \

--table emp -m 2 \

--mapreduce-job-name FromMySQLToHDFS \

--delete-target-dir \

--columns"EMPNO,ENAME,JOB,SAL,COMM" \

--target-dir EMP_COLUMN_WHERE \

--fields-terminated-by '\t' \

--null-string '' --null-non-string '0' \

--where 'SAL>2000'

默认:

         -m4

         emp

         emp.jar

        

        

sqoop import \

--connect jdbc:mysql://localhost:3306/sqoop\

--username root --password root \

-m 2 \

--mapreduce-job-name FromMySQLToHDFS \

--delete-target-dir \

--target-dir EMP_COLUMN_QUERY \

--fields-terminated-by '\t' \

--null-string '' --null-non-string '0' \

--query "SELECT * FROM emp WHEREEMPNO>=7566 AND \$CONDITIONS" \

--split-by 'EMPNO'

sqoop eval \

--connect jdbc:mysql://localhost:3306/sqoop\

--username root --password root \

--query 'select * from emp'

        

        

        

        

emp.opt 

import

--connect

jdbc:mysql://localhost:3306/sqoop

--username

root

--password

root

--table

emp

--delete-target-dir

sqoop --options-file emp.opt        

        

        

1.3.2 sqoop 导出FromHDFSToMySQL

sqoop export \

--connect jdbc:mysql://localhost:3306/sqoop\

--username root --password root \

-m 2 \

--mapreduce-job-name FromHDFSToMySQL \

--table emp_demo \

--export-dir /user/hadoop/emp   

        

1.3.3 sqoop导入mysql-->HIVE

        

sqoop import \

--connect jdbc:mysql://localhost:3306/sqoop\

--username root --password root \

--table emp -m 2 \

--mapreduce-job-name FromMySQLToHive \

--delete-target-dir \

--hive-database ruozedata \

--hive-table ruozedata_emp_partition \

--hive-import \

--hive-partition-key 'pt' \

--hive-partition-value '2018-08-08' \

--fields-terminated-by '\t'--hive-overwrite

        

--create-hive-table不建议使用,建议大家先创建一个hive表再进行sqoop导入数据到hive表

        

        

create table ruozedata_emp_partition

(empno int, ename string, job string, mgrint, hiredate string, salary double, comm double, deptno int)

partitioned by (pt string)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

        

         Hive的数据:HDFS

         HDFS2MySQL==  Hive2MySQL

        

        

sqoop job --create ruozejob -- \

import \

--connect jdbc:mysql://localhost:3306/sqoop\

--username root --password root \

--table emp -m 2 \

--mapreduce-job-name FromMySQLToHDFS \

--delete-target-dir

crontab

         job

         --options-file

        

1.3.4 sqoop导出Hive ToMySQL

--- [hadoop@hadoop05 ~]$ sqoop export  --help 参数帮助

sqoop export \

--connect jdbc:mysql://hadoop0:3306/hivedb\

--username root \

--password 123456 \

--mapreduce-job-name FromHiveToMySQL \

--table results \

--export-dir/user/hive/warehouse/hive.db/results \

--input-fields-terminated-by '\t'   

        

1.4   总结:

sqoop参数特别多,推荐使用opt方式编写脚本,如果有遇到参数单引号和双引号,特别注意里面的特殊字符的转义。

需求:统计各个区域下最热门的TOP3的商品       

1) MySQL: city_info   静态

2) MySQL: product_info  静态

         DROPTABLE product_info;

         CREATETABLE `product_info` (

           `product_id` int(11) DEFAULT NULL,

           `product_name` varchar(255) DEFAULT NULL,

           `extend_info` varchar(255) DEFAULT NULL

         )ENGINE=InnoDB DEFAULT CHARSET=utf8;        

3) Hive: user_click  用户行为日志   date分区      

user_id int

session_id string

action_time string

city_id int

product_id int

实现需求:

1) city_info ===> hive

2) product_info ===> hive

3) 三表的join  取 TOP3(按区域进行分组)   按天分区表

最终的统计结果字段如下:

product_id 商品ID

product_name 商品名称

area 区域

click_count 点击数/访问量

rank 排名

day    时间

====> MySQL

        

day : 20180808

hive 2 mysql: delete xxx from whereday='20180808'

        

1、mysql建表

CREATE TABLE `city_info` (

  `city_id` int(11) DEFAULT NULL,

  `city_name` varchar(255) DEFAULT NULL,

  `area` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

insert  into `city_info`(`city_id`,`city_name`,`area`) values (1,'BEIJING','NC'),

(2,'SHANGHAI','EC'),(3,'NANJING','EC'),(4,'GUANGZHOU','SC'),(5,'SANYA','SC'),(6,'

WUHAN','CC'),(7,'CHANGSHA','CC'),(8,'XIAN','NW'),(9,'CHENGDU','SW'),(10,'HAERBIN'

,'NE');

 

[hadoop@hadoop05 data]$ mysql -uroot -P3308 -h172.16.18.153 -p123456 -D ruozedata_basic03

mysql> source city_info.sql

Query OK, 1 row affected (0.02 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 10 rows affected (0.01 sec)

Records: 10  Duplicates: 0  Warnings: 0

mysql> CREATE TABLE `product_info` (

    ->   `product_id` int(11) DEFAULT NULL,

    ->   `product_name` varchar(255) DEFAULT NULL,

    ->   `extend_info` varchar(255) DEFAULT NULL

    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.01 sec)

mysql> source product_info.sql

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.01 sec)

2、hive建立分区表

hive> create table user_clik(

    > user_id int,

    > session_id string,

    > action_time string,

    > city_id int,

    > product_id int

    > )

    > partitioned by (day string)

    > row format delimited fields terminated by '\t';

OK

Time taken: 0.134 seconds

hive> desc user_clik;

OK

user_id             int                                     

session_id             string                                    

action_time           string                                    

city_id                int                                      

product_id            int                                     

day                         string                                    

                  

# Partition Information          

# col_name                data_type           comment            

                  

day                         string                                    

Time taken: 0.217 seconds, Fetched: 11 row(s)

3、数据导入前将数据中^A字符处理掉

cat -v user_click.txt |sed 's/\^A//g' >user_click2.txt

53,^A561e94c2fa99467d956a26d55aab3cb6^A,2016-05-05 3:10:07^A,9,18 ---处理前的数据

53,561e94c2fa99467d956a26d55aab3cb6,2016-05-05 3:10:07,9,18  ---处理后的数据

--导入字段

hive> LOAD DATA LOCAL INPATH '/home/hadoop/data/user_click.txt'

    > OVERWRITE INTO TABLE user_clik

    > PARTITION(day='2016-05-05'); ---分区字段名称我们随便指定,就像相当于建立一个分区,分区叫2016-05-05,我们的数据全部导入到这个分区中

Loading data to table hive.user_clik partition (day=2016-05-05)

Failed with exception MetaException(message:Error(s) were found while auto-creating/validating the datastore for classes. The errors are printed in the log, and are attached to this exception.)

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask

分析:我们的数据库默认的字符集已经不是latin1;需要将meta数据表字符集改为lantin1

Tail -f /tmp/hadoop/hive.log

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 3072 bytes

alter table PARTITION_KEYS convert to character set latin1;

将meta数据表PARTITION_KEYS字符集,还是报错,那就是还有表需要改字符集

---将meta整个数据库字符集改为latin1;

alter database ruozedata_basic03 character set latin1;

mysql> alter database ruozedata_basic03 character set latin1;

Query OK, 1 row affected (0.02 sec)

hive> LOAD DATA LOCAL INPATH '/home/hadoop/data/user_click.txt'

    > OVERWRITE INTO TABLE user_clik

    > PARTITION(day='2016-05-05');

Loading data to table hive.user_clik partition (day=2016-05-05)

Partition hive.user_clik{day=2016-05-05} stats: [numFiles=1, numRows=0, totalSize=725264, rawDataSize=0]

OK

Time taken: 1.061 seconds

hive>

4、将两个静态数据sqoop导入到hive中

先创建一个hive表再进行sqoop导入数据到hive

CREATE TABLE `city_info` (

  `city_id` int,

  `city_name` string,

  `area` string

)ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t' ;

 CREATE TABLE `product_info` (

     `product_id` int,

      `product_name` string,

     `extend_info` string

  ) ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t' ;

表没有主键

m=1

18/05/22 13:22:06 ERROR tool.ImportTool: Error during import: No primary key could be found for table city_info. Please specify one with --split-by or perform a sequential import with '-m 1'.

sqoop import \

--connect jdbc:mysql://172.16.18.153:3308/hivedb \

--username root \

--password 123456 \

--table city_info \

--m 1 \

--mapreduce-job-name FromMySQLToHive \

--hive-database hive \

--hive-table city_info \

--hive-import \

--fields-terminated-by '\t' \

--delete-target-dir \

--hive-overwrite

sqoop import \

--connect jdbc:mysql://172.16.18.153:3308/hivedb \

--username root \

--password 123456 \

--table product_info \

--m 1 \

--mapreduce-job-name FromMySQLToHive \

--hive-database hive \

--hive-table product_info \

--hive-import \

--fields-terminated-by '\t' \

--delete-target-dir \

--hive-overwrite

18/05/22 13:36:03 INFO mapreduce.ImportJobBase: Beginning import of city_info

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject

                  at org.apache.sqoop.util.SqoopJsonUtil.getJsonStringforMap(SqoopJsonUtil.java:43)

                  at org.apache.sqoop.SqoopOptions.writeProperties(SqoopOptions.java:758)

                  at org.apache.sqoop.mapreduce.JobBase.putSqoopOptionsToConfiguration(JobBase.java:369)

                  at org.apache.sqoop.mapreduce.JobBase.createJob(JobBase.java:355)

                  at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:256)

                  at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:692)

                  at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:127)

                  at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:507)

                  at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:615)

                  at org.apache.sqoop.Sqoop.run(Sqoop.java:143)

                  at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

                  at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)

                  at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)

                  at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)

                  at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

Caused by: java.lang.ClassNotFoundException: org.json.JSONObject

                  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

                  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

                  at java.security.AccessController.doPrivileged(Native Method)

                  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

                  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

                  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

                  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

         ... 15 more

分析:确实java_json.jar包

下载java_json.jar  导入java-json.jar包,

下载地址http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm,

把java-json.jar添加到../sqoop/lib目录

        

问题2:

         18/05/22 13:39:13 ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.

18/05/22 13:39:13 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf

                  at org.apache.sqoop.hive.HiveConfig.getHiveConf(HiveConfig.java:50)

                  at org.apache.sqoop.hive.HiveImport.getHiveArgs(HiveImport.java:392)

                  at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:379)

                  at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:337)

                  at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:241)

                  at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:524)

                  at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:615)

                  at org.apache.sqoop.Sqoop.run(Sqoop.java:143)

                  at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

                  at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)

                  at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)

                  at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)

                  at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf

                  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

                  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

                  at java.security.AccessController.doPrivileged(Native Method)

                  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

                  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

                  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

                  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

                  at java.lang.Class.forName0(Native Method)

                  at java.lang.Class.forName(Class.java:191)

                  at org.apache.sqoop.hive.HiveConfig.getHiveConf(HiveConfig.java:44)

分析:

找不到hive相关的配置路径库文件,配置lib路径,如果还不行就是缺少连接hive 驱动lib包,和连接mysql驱动jar一样

vim .bash_profile

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib:$CLASSPATH:$SQOOP_HOME/lib

添加sqoop库文件路径到环境变量  

将hive的jar包拷贝到sqoop/lib/

[hadoop@hadoop05 lib]$ cp hive-exec-1.1.0-cdh5.9.0.jar  ../../sqoop/lib/

[hadoop@hadoop05 lib]$ pwd

/home/hadoop/app/hive/lib

[hadoop@hadoop05 lib]$

 

select c.area,p.product_name,count(u.product_id)

from user_click u left join city_info c on u.city_id=c.city_id

left join product_info p on u.product_id=p.product_id

AND u.day='2016-05-05'

group by c.area,p.product_name;

select * from (

select aa.area,aa.name,aa.ct,

row_number() over(partition by aa.area order by ct  desc) as rn

from (

    select c.area area,p.product_name name,count(t.product_id) ct

    from user_clik t left join city_info c on t.city_id=c.city_id

    left join product_info p on t.product_id=p.product_id

    where t.day='2016-05-05'

    group by c.area,p.product_name) aa  ) tt

where tt.rn<=3;

 

select * from (

select aa.area,aa.name,aa.ct,

row_number() over(partition by aa.area order by ct  desc) as rn

from (

    select c.area area,p.product_name name,count(t.product_id) ct

    from  user_clik t  left join  city_info  c on t.city_id=c.city_id

    left join product_info p on t.product_id=p.product_id

    where t.day='2016-05-05' and t.city_id is not NULL

    group by c.area,p.product_name) aa  ) tt

where tt.rn<=3;

select * from (

select aa.area,aa.name,aa.ct,

row_number() over(partition by aa.area order by ct  desc) as rn

from (

    select c.area area,p.product_name name,count(t.product_id) ct

    from city_info  c left join user_clik t on t.city_id=c.city_id

    left join product_info p on t.product_id=p.product_id

    where t.day='2016-05-05' and t.city_id is not NULL

    group by c.area,p.product_name) aa  ) tt

where tt.rn<=3;

以区域关联,排查区域为空的3条数据

将这个数据存放到一个计算中间表中,如果将中间表导出到mysql中,

1.4.1.1 Hive最终结果表

CREATE TABLE `results` (

     `city_name` string,

      `product_name` string,

     `count`  int,

      rank int

  ) ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t' ;

Hive计算结果数据保存

Hive计算结果数据之间保存到hive中,(也可保存到本地文件系统,hdfs上都可以)

 insert overwrite  table results

select * from (

select aa.area,aa.name,aa.ct,

row_number() over(partition by aa.area order by ct  desc) as rn

from (

    select c.area area,p.product_name name,count(t.product_id) ct

    from city_info  c left join user_clik t on t.city_id=c.city_id

    left join product_info p on t.product_id=p.product_id

    where t.day='2016-05-05' and t.city_id is not NULL

    group by c.area,p.product_name) aa  ) tt

where tt.rn<=3;

将结果数据从hive中sqoop导出到mysql中

导入过程报错

re. Consider using -P instead.

18/05/22 17:33:37 INFO manager.MySQLManager: Preparing to use a MySQL streaming r

18/05/22 17:33:37 INFO tool.CodeGenTool: Beginning code generation

18/05/22 17:33:37 ERROR manager.SqlManager: Error executing statement: com.mysql.ns.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driveeived any packets from the server.

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link fail

The last packet sent successfully to the server was 0 milliseconds ago. The driveeived any packets from the server.

         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructo.java:57)

         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCossorImpl.java:45)

         at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

         at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)

         at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:99

         at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:342)

         at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2188)

         at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:22

         at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2016)

         at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776)

         at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)

         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructo.java:57)

         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingCossorImpl.java:45)

         at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

         at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)

         at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)

         at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:

         at java.sql.DriverManager.getConnection(DriverManager.java:571)

         at java.sql.DriverManager.getConnection(DriverManager.java:215)

         at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:904

         at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcM2)

         at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:763)

         at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:786)

         at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManage

         at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManag

         at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:246

         at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:3

         at org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1853)

         at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1653)

         at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:107)

         at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:64)

         at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:100)

         at org.apache.sqoop.Sqoop.run(Sqoop.java:143)

         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

         at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)

         at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)

         at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)

         at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

Caused by: java.net.UnknownHostException: hadoop0

         at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)

         at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)

         at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1295

         at java.net.InetAddress.getAllByName0(InetAddress.java:1248)

         at java.net.InetAddress.getAllByName(InetAddress.java:1164)

         at java.net.InetAddress.getAllByName(InetAddress.java:1098)

         at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.jav

         at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:301)

         ... 33 more

18/05/22 17:33:37 ERROR tool.ExportTool: Encountered IOException running export jOException: No columns to generate for ClassWriter

---建立mysql表

CREATE TABLE ` results` (

           city_name   varchar(255)  DEFAULT NULL,

           product_name  varchar(255) DEFAULT NULL,

           count   int(8) DEFAULT NULL,

      rank  int(8) default null

         ) ENGINE=InnoDB DEFAULT CHARSET=utf8;        

sqoop export \

--connect jdbc:mysql://172.16.18.153:3308/hivedb \

--username root \

--password 123456 \

--mapreduce-job-name FromHiveToMySQL \

--table results \

--export-dir /user/hive/warehouse/hive.db/results \

--input-fields-terminated-by '\t'   

--connect jdbc:mysql://172.16.18.153:3308/hivedb  ---导入到哪个mysql库

Hive的meta数据配置文件里面已经配置好了,不要和这的mysql库混一起了

---mysql查询数据

报错提示:

 

猜你喜欢

转载自blog.csdn.net/ycwyong/article/details/80735542