Mac下Sqoop安装与使用

来源:互联网 发布:达梦数据库下载网盘 编辑:程序博客网 时间:2024/06/06 21:42

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

1.下载与安装

官网下载地址(下载链接),

将mysql的驱动jar包复制到/sqoop-1.4.6/lib/文件夹下。

配置文件

2.导入表结构到hive

bin/sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --username root --password root --table dim_prov --hive-table dim_prov

同时导入表结构和表数据

bin/sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root --table w_cube_activity_overview --hive-import -m 1;

3.导入数据到hbase

bin/sqoop import --connect jdbc:mysql://localhost:3306/test --table w_cube_activity_overview --hbase-table w_cube_activity_overview --column-family fee --hbase-row-key id --hbase-create-table --username root --password root -P

4.遇到的问题:

4.1 主键问题

如果mysql中的表没有设置主键,会出现以下的错误。这时候就需要在mysql的表中添加主键。

17/11/24 14:36:13 ERROR tool.ImportTool: Error during import: No primary key could be found for table w_cube_activity_overview_large. Please specify one with --split-by or perform a sequential import with '-m 1'.

添加主键的SQL语句

alter table w_cube_activity_overview_large add column id int not null auto_increment primary key

4.2 队列问题

如果在导入hive的过程中遇到了job运行的时候,显示当前用户不能操作默认的队列default,那么表示yarn默认操作的队列是default,而当前用户访问不了default队列。

17/11/24 14:46:10 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Failed to run job : org.apache.hadoop.security.AccessControlException: User bonc_hh cannot submit applications to queue root.default        at org.apache.hadoop.mapred.YARNRunner.submitJob(YARNRunner.java:301)        at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:244)        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1307)        at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1304)        at java.security.AccessController.doPrivileged(Native Method)        at javax.security.auth.Subject.doAs(Subject.java:422)        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693)        at org.apache.hadoop.mapreduce.Job.submit(Job.java:1304)        at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1325)        at org.apache.sqoop.mapreduce.ImportJobBase.doSubmitJob(ImportJobBase.java:196)        at org.apache.sqoop.mapreduce.ImportJobBase.runJob(ImportJobBase.java:169)        at org.apache.sqoop.mapreduce.ImportJobBase.runImport(ImportJobBase.java:266)        at org.apache.sqoop.manager.SqlManager.importTable(SqlManager.java:673)        at org.apache.sqoop.manager.MySQLManager.importTable(MySQLManager.java:118)        at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:497)        at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)        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)

只需要添加一个队列名称参数即可,运行的脚本如下:

./sqoop import -D mapred.job.queue.name=bonc_hh  --connect jdbc:mysql://localhost:3306/myql_dev --username pure --password pure --table dim_activity_type --hive-table dim_activity_type
原创粉丝点击