使用sqoop将多表加载到hdfs一次

时间:2016-07-07 12:39:04

标签: mysql hdfs sqoop

我想将mysql中多表的数据加载到hdfs中,表格为'名称类似于a_0_0,a_0_1,a_0_2。

如何使用Sqoop将这些表格中的数据一次加载到hdfs中?

我可以使用UNION吗?

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一目标。

  1. 如果要导入mysql db中的所有表,可以使用:import-all-tables - 也可以使用此参数--exclude-tables <tables> - 逗号分隔值 - 排除某些表来自impor-all-tables

  2. 如果您想从某些表中导入一些数据(有意义的数据),您可以使用:Free-form Query Imports

  3. 如果要导入表数,可以使用shell脚本:

    #!/bin/sh
    
    i=0
    while [ ${i} -le 5 ]
     do
        echo "importing table a_0_${i}"
        #here write your full sqoop command, this is just an example  
        #sqoop import --connect  --table a_0_${i}
      i=$(( i + 1 ))
     done
    
  4. 现在运行shell脚本:sqoop命令将根据逻辑运行6次并导入6个表。

    $ ./importAll.sh
    importing table a_0_0
    importing table a_0_1
    importing table a_0_2
    importing table a_0_3
    importing table a_0_4
    importing table a_0_5
    

    注意:您必须根据需要修改shell脚本中的逻辑。我提议的解决方案基于所提供的详细信息。