# Get the max id from the hive table
maxCount=`hive -S -e "SELECT MAX(id) FROM hivedb.table_1" | head -1 | cut -d ' ' -f1`
# If maxCount is not a number, make it zero.
re='^[0-9]+$'
if ! [[ $maxCount =~ $re ]] ; then
maxCount=0
fi
# Build the SQL query
sql_query="select col1, col2, ..., coln from table_1 (NOLOCK) WHERE id > ${maxCount}"
# Run the Sqoop import
sqoop import --connect 'jdbc:jdbcUrl;UserName=usrname;password=password;database=dbName' --query "$sql_query AND \$CONDITIONS" -m 4 --split-by id --hive-table hivedb.table_1 --hive-import ;
1条答案
按热度按时间nqwrtyyt1#
我们还尝试使用基于最后一个时间戳的sqoop作业进行增量上传。您将面临的挑战是,如果sqoop服务重新启动,它将丢失时间戳或您正在使用的控制变量的跟踪。
我建议改为调整导入查询。例如,如果要为
table_1
从rdbms到hive,使用bash shell
这样地: