Sqoop导入数据到HDFS中(大数据存储系统)

环境准备:h15机器,mysql使用h15的,不用h17的mysql

配置hive的环境变量和hadoop的环境变量

注意:

(1)一定要配置HADOOP_HOME和HIVE_HOME

(2)和flume相似,要将sqoop放在active的namenode节点上


错误1:Error: Could not find or load main class org.apache.sqoop.Sqoop

解决:hadoop和sqoop的环境变量配置有问题

错误2:No such sqoop tool:mport. See 'sqoop help'.

解决:import----->mport  单词错误

错误3:

onnection. Ensure that you have called .close() on any active streaming result sets before attempting more queries. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:914)

at com.mysql.jdbc.MysqlIO.checkForOutstandingStreamingData(MysqlIO.java:2181)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1542)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3206)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:1232)

at com.mysql.jdbc.Connection.getMaxBytesPerChar(Connection.java:3673)

at com.mysql.jdbc.Field.getMaxBytesPerCharacter(Field.java:482)

at com.mysql.jdbc.ResultSetMetaData.getPrecision(ResultSetMetaData.java:443)

at org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:286)

at org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241)

at org.apache.sqoop.manager.SqlManager.getColumnTypes(SqlManager.java:227)

at org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:295)

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

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

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)

16/04/28 19:32:58 ERROR tool.ExportTool: Encountered IOException running export job: java.io.IOException: No columns to generate for ClassWriter

解决:mysql驱动包有问题导致,建议使用高版本的mysql驱动mysql-connector-java-5.1.31-bin.jar


1\上传sqoop文件,解压,配置sqoop的环境变量:SQOOP_HOME=/home/sqoop-1.4.6

查看是否安装成功:# sqoop help

2\将mysql的数据库驱动包:mysql-connector-java-5.1.18-bin.jar复制到h15的sqoop的目录(/home/sqoop-1.4.6/lib)下

3\将mysql中的数据导到大数据存储平台(hdfs)的配置文件:

#vi sqoop1(导入方式一:column方式只支持单表导入)


import

--connect

jdbc:mysql://h15:3306/result_db

--username

root

--password

1714

--table

dimension_platform

--columns

id,platform_name

--where(接条件)

1=1

--as-textfile

--delete-target-dir

--fetch-size

2

-m (最大map任务数)

1

--target-dir

/sqoop/data

--null-string

''

4\在sqoop机器上执行以下命令进行测试:

#sqoop --options-file /opt/testsqoop/sqoop1 

然后查看该文件是否正常

#hdfs dfs -cat /sqoop/data/part-m-00000


5\导入mysql数据库中的数据到hive库中(如果要导入hbase,那么只需要整合hbase即可)

#vi sqoop2(导入方式二:query方式支持多表导入)


import

--connect

jdbc:mysql://h15:3306/result_db

--username

root

--password

1714

--query

' select p.platform_name,u.new_install_users  from stats_user as u join  dimension_platform p 

on u.platform_dimension_id=p.id where p.id>0and $CONDITIONS '(必须要添加红色字体,如果没有where语句,则不用加)

--as-textfile

--delete-target-dir

--fetch-size

2

-m

1

--target-dir

/sqoop/data

--null-string

''

--hive-import

--hive-overwrite

--create-hive-table

--hive-table

t_test(hive会自动创建该表)


6\在h15上执行sqoop的命令,进行数据转移

#sqoop --options-file /opt/testsqoop/option2 


在hive客户端查看是否有数据

#select * from t_test;



7\将hdfs上的数据导出到mysql数据库中

(1)在h15的数据库result_db中创建表t_sqoop

create table t_sqoop(

name varchar(200),

num int(11)

)

(2)编辑配置文件option3

#vi option3(导出方式三:导出hdfs上的数据到mysql)


export

--connect

jdbc:mysql://h15/result_db

--username

root

--password

1714

--columns(导入到mysql表中的字段)

name,num

--export-dir

/test/test.txt

-m

1

--table(mysql中的表)

t_sqoop

--input-null-string

null

--fields-terminated-by(指定文件里内容的隔开符号)

','


(2)新建一个数据文件sqoop.txt

内容如下:

Tim,23

Tom,26

Marry,21


(3)在h15上执行上传文件到hdfs上的命令

#hdfs dfs -mkdir /test

#hdfs dfs -put /opt/testsqoop/sqoop.txt  /test


(4)执行sqoop命令,将hdfs上的数据传输到mysql中

#sqoop --options-file /opt/testsqoop/option3


(5)进入mysql查看表t_sqoop中,是否已经有数据

#select * from t_sqoop;




8\将hive上的数据导出到mysql数据库中(测试不通过)

(1)列出mysql数据库中的所有数据库命令

  #  sqoop list-databases --connect jdbc:mysql://h15:3306/ --username root --password 1714

(2)连接mysql并列出数据库中的表命令

   # sqoop list-tables --connect jdbc:mysql://h15:3306/dg --username root --password 1714

命令中的dg为mysql数据库中的dg数据库名称  username password分别为mysql数据库的用户密码

(3)将关系型数据的表结构复制到hive中

#sqoop create-hive-table --connect jdbc:mysql://h15:3306/dg --table t_test --username root --password 1714 --hive-table t_test

其中--table username为mysql中的数据库dg中的表   --hive-table t_test为hive中新建的表名称

create table t_test(

platform_name varchar(50),

new_install_users int(20)

)

(4)从关系数据库导入文件到hive中#sqoop import --connect jdbc:mysql://h15:3306/dg --username root --password 1714 --table t_test --hive-import

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

#sqoop export --connect jdbc:mysql://h15:3306/dg --username root --password 1714  --table t_test 

--export-dir /user/hive/warehouse/20160501 --input-fields-terminated-by '\t'

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容