【发布时间】:2017-08-25 01:16:32
【问题描述】:
我在 Linux 中有一个 shell 脚本:
#!/bin/bash
#This script is to import tables from mysql to hdfs
source /home/$USER/mysql/source.sh
[ $# -ne 1 ] && { echo "Usage : $0 table ";exit 1; }
table=$1
sqoop import --connect ${domain}:${port}/${database} \
--username ${username} --password ${password}\
--query "select * from ${table} where \$CONDITIONS" \
-m 1 --as-parquetfile --hive-import --hive-database ${hivedatabase} \
--hive-table ${table} --map-column-java Date=String \
--target-dir /user/hive/warehouse/${hivedatabase}.db/${table}\
--outdir /home/$USER/logs/outdir
echo "****************************************************"
此脚本将表名作为参数。表名位于名为 tables.txt 的文件中。
source.sh文件内容:
domain=jdbc:mysql://XXXXXXXXX
port=3306
database=testing
username=xxxxxx
password=xxxxxxx
hivedatabase=testing
现在我想并行安排这个脚本。我想做的是一次为 10 个表安排这个脚本。就像从 tables.txt 中获取前 10 个表名,然后运行此脚本。如果脚本是针对一个表执行的,那么就取第 11 个表,依此类推......
是否有可能在cron工作中做,或者我们如何才能做到这一点。
请提出最佳方法。
【问题讨论】:
标签: linux shell scripting cron