apache sqoop增量保存作业设置

ui7jx7zq  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(423)

对于使用sqoop保存的作业,ooficial doc声明将导入较新的记录。没问题。
但是,如果我们要使用保存的作业,并且要使用>=上次保存的值,例如,并发使用数据库中此数据类型可能出现的时间戳不准确,该怎么办?我们是否可以影响保存的值或比较,即>=而不是>?

nqwrtyyt

nqwrtyyt1#

我们还尝试使用基于最后一个时间戳的sqoop作业进行增量上传。您将面临的挑战是,如果sqoop服务重新启动,它将丢失时间戳或您正在使用的控制变量的跟踪。
我建议改为调整导入查询。例如,如果要为 table_1 从rdbms到hive,使用 bash shell 这样地:


# 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 ;

相关问题