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

load multi tables into hdfs one time using sqoop

我想将mysql中的多个表的数据加载到hdfs中,表名如a_0_0、a_0_1、a_0_2。

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

我可以使用 UNION 吗?

您可以通过多种方式实现这一目标。

  1. 如果你想在 mysql 数据库中导入所有 tables,你可以使用:import-all-tables - 你也可以使用这个参数 --exclude-tables <tables> - 逗号分隔值 - 从 impor-all-tables

  2. 中排除一些 table(s)
  3. 如果你想从一些table中导入一些数据(有意义的数据),你可以使用:Free-form Query Imports

  4. 如果要导入table个数,可以右键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
    

现在 运行 shell 脚本:sqoop 命令将按照逻辑 运行 6 次并导入 6 tables。

$ ./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 脚本中的逻辑。我提出的解决方案是基于问题中提供的详细信息。