hadoop大数目培养和练习,hive之间数据导入导出的2个工具

运行条件  centos 五.六   hadoop  hive
sqoop是让hadoop技术辅助的clouder公司开发的1个在关周全据库和hdfs,hive之间数据导入导出的四个工具。

运转环境  centos 五.6   hadoop  hive
sqoop是让hadoop技术支持的clouder公司开发的贰个在关全面据库和hdfs,hive之间数据导入导出的一个工具。

新加坡尚学堂hadoop大数目培养和磨炼组原创,六续有hadoop大数量技术相关文章奉上,请多关心!

新加坡尚学堂hadoop大数量培训组原创,六续有hadoop大数据技术有关小说奉上,请多关切!

图片 1
在利用进度中也许遇见的题材:

图片 2
在行使进度中只怕遇见的题材:

  • sqoop正视zookeeper,所以必须配备ZOOKEEPEMurano_HOME到环境变量中。
  • sqoop-一.贰.0-CDH三B四正视hadoop-core-0.20.贰-CDH三B四.jar,所以您必要下载hadoop-0.20.2-CDH3B4.tar.gz,解压缩后将hadoop-0.20.二-CDH三B4/hadoop-core-0.20.2-CDH叁B四.jar复制到sqoop-一.贰.0-CDH三B4/lib中。
  • sqoop正视zookeeper,所以必须安插ZOOKEEPE本田CR-V_HOME到环境变量中。
  • sqoop-一.二.0-CDH三B4注重hadoop-core-0.20.二-CDH3B4.jar,所以你须求下载hadoop-0.20.2-CDH3B4.tar.gz,解压缩后将hadoop-0.20.二-CDH三B4/hadoop-core-0.20.二-CDH三B四.jar复制到sqoop-壹.贰.0-CDH三B4/lib中。

一  首先安装sqoop,倘诺您利用的是clouder分发版的话就非凡简单  
   # yum install sqoop
  假若用合法版本的话 
   # cd /etc/yum.repos.d
   # wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
   # yum -y install sqoop
   sqoop就会安装完毕
2  使用sqoop
  
首先将mysql-connector-java-5.一.1陆-bin.jar文件复制到/usr/lib/sqoop/lib文件夹下
   
3  导入导出数据库
   壹)列出mysql数据库中的全数数据库命令
  #  sqoop list-databases –connect jdbc:mysql://localhost:3306/
–username root –password 123456
   
   二)连接mysql并列出数据库中的表命令
   # sqoop list-tables –connect jdbc:mysql://localhost:3306/test
–username root –password 123456
   命令中的test为mysql数据库中的test数据库名称  username
password分别为mysql数据库的用户密码
   
   3)将关系型数据的表结构复制到hive中
 sqoop create-hive-table –connect jdbc:mysql://localhost:3306/test
–table username –username root –password 123456 –hive-table test
里头 –table username为mysql中的数据库test中的表   –hive-table test
为hive中新建的表名称
   
   四)从关周全据库导入文本到hive中
sqoop import –connect jdbc:mysql://localhost:3306/test –username root
–password mysql-password –table t1 –hive-import

壹  首先安装sqoop,假若你利用的是clouder分发版的话就卓殊简单  
   # yum install sqoop
  假如用官方版本的话 
   # cd /etc/yum.repos.d
   # wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo
   # yum -y install sqoop
   sqoop就会设置到位
2  使用sqoop
  
首先将mysql-connector-java-五.1.16-bin.jar文件复制到/usr/lib/sqoop/lib文件夹下
   
叁  导入导出数据库
   一)列出mysql数据库中的全数数据库命令
  #  sqoop list-databases –connect jdbc:mysql://localhost:3306/
–username root –password 123456
   
   二)连接mysql并列出数据库中的表命令
   # sqoop list-tables –connect jdbc:mysql://localhost:3306/test
–username root –password 123456
   命令中的test为mysql数据库中的test数据库名称  username
password分别为mysql数据库的用户密码
   
   叁)将关系型数据的表结构复制到hive中
 sqoop create-hive-table –connect jdbc:mysql://localhost:3306/test
–table username –username root –password 123456 –hive-table test
里头 –table username为mysql中的数据库test中的表   –hive-table test
为hive中新建的表名称
   
   四)从关周到据库导入文本到hive中
sqoop import –connect jdbc:mysql://localhost:3306/test –username root
–password mysql-password –table t1 –hive-import

   5)将hive中的表数据导入到mysql中

   伍)将hive中的表数据导入到mysql中

./sqoop export –connect jdbc:mysql://localhost:3306/test –username
root –password admin –table uv_info –export-dir
/user/hive/warehouse/uv/dt=2011-08-03

./sqoop export –connect jdbc:mysql://localhost:3306/test –username
root –password admin –table uv_info –export-dir
/user/hive/warehouse/uv/dt=2011-08-03

倘若报错
11/08/05 10:51:22 INFO mapred.JobClient: Running job:
job_201108051007_0010  
11/08/05 10:51:23 INFO mapred.JobClient:  map 0% reduce 0%  
11/08/05 10:51:36 INFO mapred.JobClient: Task Id :
attempt_201108051007_0010_m_000000_0, Status : FAILED 
java.util.NoSuchElementException  
        at java.util.AbstractList$Itr.next(AbstractList.java:350)  
        at uv_info.__loadFromFields(uv_info.java:194)  
        at uv_info.parse(uv_info.java:143)  
        at
com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:79) 
        at
com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:38) 
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)  
        at
com.cloudera.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:187) 
        at
org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647)  
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)  
        at org.apache.hadoop.mapred.Child$4.run(Child.java:270)  
        at java.security.AccessController.doPrivileged(Native
Method)  
        at javax.security.auth.Subject.doAs(Subject.java:396)  
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127) 
        at org.apache.hadoop.mapred.Child.main(Child.java:264)  
此错误的原由为sqoop解析文件的字段与MySql数据库的表的字段对应不上导致的。因而要求在履行的时候给sqoop扩大参数,告诉sqoop文件的分隔符,使它能够正确的分析文件字段。

假设报错
11/08/05 10:51:22 INFO mapred.JobClient: Running job:
job_201108051007_0010  
11/08/05 10:51:23 INFO mapred.JobClient:  map 0% reduce 0%  
11/08/05 10:51:36 INFO mapred.JobClient: Task Id :
attempt_201108051007_0010_m_000000_0, Status : FAILED 
java.util.NoSuchElementException  
        at java.util.AbstractList$Itr.next(AbstractList.java:350)  
        at uv_info.__loadFromFields(uv_info.java:194)  
        at uv_info.parse(uv_info.java:143)  
        at
com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:79) 
        at
com.cloudera.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:38) 
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)  
        at
com.cloudera.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:187) 
        at
org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647)  
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)  
        at org.apache.hadoop.mapred.Child$4.run(Child.java:270)  
        at java.security.AccessController.doPrivileged(Native
Method)  
        at javax.security.auth.Subject.doAs(Subject.java:396)  
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127) 
        at org.apache.hadoop.mapred.Child.main(Child.java:264)  
此错误的原委为sqoop解析文件的字段与MySql数据库的表的字段对应不上造成的。因而供给在举办的时候给sqoop增加参数,告诉sqoop文件的分隔符,使它亦可科学的剖析文件字段。

hive暗许的字段分隔符为’\001′
./sqoop export –connect jdbc:mysql://localhost:3306/datacenter
–username root –password admin –table uv_info –export-dir
/user/hive/warehouse/uv/dt=2011-08-03 –input-fields-terminated-by ‘\t’

hive默许的字段分隔符为’\001′
./sqoop export –connect jdbc:mysql://localhost:3306/datacenter
–username root –password admin –table uv_info –export-dir
/user/hive/warehouse/uv/dt=2011-08-03 –input-fields-terminated-by ‘\t’

 

 

相关文章