企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 导入表数据到 HDFS 下面的命令用于从MySQL数据库服务器中的emp表导入HDFS `--m` 表示跑这个任务需要多少个map 这边**mysql指定hostname或者ip,不要用localhost**,否则会出现连接错误,因为他是调用mapreduce处理的,多个机器 ~~~ sqoop import \ --connect jdbc:mysql://master:3306/userdb \ --username root \ --password root \ --table emp --m 1 ~~~ **如果要指定这样`--m 2`的话,就需要指定个字段了** `--split-by id`比如指定id,按照那个字段切分 ~~~ sqoop import \ --connect jdbc:mysql://master:3306/userdb \ --username root \ --password root \ --split-by id \ --table emp_add --m 2 ~~~ 如果成功执行,那么会得到下面的输出。 ~~~ 14/12/22 15:24:54 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5 14/12/22 15:24:56 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset. INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-hadoop/compile/cebe706d23ebb1fd99c1f063ad51ebd7/emp.jar ----------------------------------------------------- O mapreduce.Job: map 0% reduce 0% 14/12/22 15:28:08 INFO mapreduce.Job: map 100% reduce 0% 14/12/22 15:28:16 INFO mapreduce.Job: Job job_1419242001831_0001 completed successfully ----------------------------------------------------- ----------------------------------------------------- 14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Transferred 145 bytes in 177.5849 seconds (0.8165 bytes/sec) 14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Retrieved 5 records. ~~~ 为了验证在HDFS导入的数据,请使用以下命令查看导入的数据 默认在`/user/root`下面表名这个文件夹 ~~~ $HADOOP_HOME/bin/hadoop fs -cat /user/hadoop/emp/part-m-00000 或者 $HADOOP_HOME/bin/hadoop fs -cat /user/root/emp/part-m-00000 ~~~ emp表的数据和字段之间用逗号(,)表示。 ~~~ 1201,gopal,manager,50000,TP 1202,manisha,Proof reader,50000,TP 1203,khalil,php dev,30000,AC 1204,prasanth,php dev,30000,AC 1205,kranthi,admin,20000,TP ~~~ # 导入到HDFS指定目录 在导入表数据到HDFS使用Sqoop导入工具,我们可以指定目标目录。 以下是指定目标目录选项的Sqoop导入命令的语法。 ~~~ --target-dir <new or exist directory in HDFS> ~~~ 下面的命令是用来导入emp_add表数据到'/queryresult'目录。 ~~~ sqoop import \ --connect jdbc:mysql://master:3306/test \ --username root \ --password root \ --target-dir /queryresult \ --table emp_add--m 1 ~~~ 下面的命令是用来验证 /queryresult 目录中 emp_add表导入的数据形式。 ~~~ $HADOOP_HOME/bin/hadoop fs -cat /queryresult/part-m-* ~~~ 它会用逗号(,)分隔emp_add表的数据和字段。 ~~~ 1201, 288A, vgiri, jublee 1202, 108I, aoc, sec-bad 1203, 144Z, pgutta, hyd 1204, 78B, oldcity, sec-bad 1205, 720C, hitech, sec-bad ~~~ 然后看运行命令的地方,下面生成了几个.java文件 他是把这些命令打包成jar包运行的 默认目录是`/user/${user.name}/${tablename}`,可以通过`--target-dir`设置hdfs上的目标目录 # 全部表导入 可以使用`import-all-tables`命令。 ~~~ sqoop import-all-tables \ –connect jdbc:mysql://master/hivemeta2db \ --username root \ --password passwd ~~~ # 指定所需列 ~~~ sqoop import \ --connect jdbc:mysql://master/hivemeta2db \ --username root \ --password passwd \ --table sds \ --columns "SD_ID,CD_ID,LOCATION" ~~~ # 指定导出文件 指定导出文件为SequenceFiles,并且将生成的类文件命名为com.ctrip.sds: ~~~ sqoop import \ --connect jdbc:mysql://master/hivemeta2db \ --username root \ --password passwd \ --table sds \ --class-name com.ctrip.sds \ --as-sequencefile ~~~