使用 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
吗?
您可以通过多种方式实现这一目标。
如果你想在 mysql 数据库中导入所有 tables,你可以使用:import-all-tables - 你也可以使用这个参数 --exclude-tables <tables>
- 逗号分隔值 - 从 impor-all-tables
中排除一些 table(s)
如果你想从一些table中导入一些数据(有意义的数据),你可以使用:Free-form Query Imports
如果要导入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 脚本中的逻辑。我提出的解决方案是基于问题中提供的详细信息。
我想将mysql中的多个表的数据加载到hdfs中,表名如a_0_0、a_0_1、a_0_2。
我如何使用 Sqoop 将这些表中的数据一次一个地加载到 hdfs 中?
我可以使用 UNION
吗?
您可以通过多种方式实现这一目标。
如果你想在 mysql 数据库中导入所有 tables,你可以使用:import-all-tables - 你也可以使用这个参数
--exclude-tables <tables>
- 逗号分隔值 - 从impor-all-tables
中排除一些 table(s)
如果你想从一些table中导入一些数据(有意义的数据),你可以使用:Free-form Query Imports
如果要导入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 脚本中的逻辑。我提出的解决方案是基于问题中提供的详细信息。