您的位置:首页 > 运维架构

Mac下Sqoop安装与使用

2017-11-29 12:51 501 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop