sqoop导入mysql重复_请教,用sqoop 把mysql的数据导入到hive 总有一条重复数据。怎么破?...

在使用Sqoop将MySQL数据导入Hive时遇到一条数据重复的问题。通过设置--append和--hive-overwrite选项,并结合日期条件查询(例如:WHERE date_column > 'yesterday' AND date_column < 'current_day'),可以避免导入重复数据。确保在SQL查询中正确过滤以排除已存在的分区。
摘要由CSDN通过智能技术生成

用下面的方式试一试~IP=$1

PORT=$2

DB=$3

USERNAME=$4

PASSWORD=$5

TABLE=$6

HIVE_DB=$7

HIVE_TABLE=$8

HDFS_LOCATION=$9

PARTITION_COLUMN=${10}

CON_DATE=${11}

#format 2017-01-09

n_day=${12}

t_day=`date --date=$n_day '+%s'`

yesterday=$(date -d"yesterday $n_day" '+%s')

HIVE_DB_TABLE=$HIVE_DB.$HIVE_TABLE

MYSQL_JDBC=jdbc:mysql://$IP:$PORT/$DB

PARTITION_PATH=$HDFS_LOCATION/$n_day

echo "--------------------"

echo "--jdbc:mysql://$IP:$PORT/$DB"

echo "--username/password:$USERNAME/$PASSWORD"

echo "--mysql table:$TABLE"

echo "--hive table:$HIVE_DB.$HIVE_TABLE"

echo "--store hdfs:$HDFS_LOCATION"

echo "--partition column:$PARTITION_COLUMN"

echo "--partition path:$PARTITION_PATH"

echo "--increment date column:$CON_DATE"

echo "--schedule date:$n_day"

echo "-----start export------"

echo "select sql: select * from $TABLE where $CON_DATE >= '$yesterday'  and $CON_DATE < '$t_day' and 1=1"

sqoop import --connect $MYSQL_JDBC --table $TABLE --username $USERNAME  --password $PASSWORD  -m 10 --append  --hive-import --hive-overwrite --hive-database xxx_dw --hive-table can_schedule_list --hive-partition-key data_date --hive-partition-value $n_day --fields-terminated-by "\0001" --where "$CON_DATE>='$yesterday' and $CON_DATE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值