如何从Sqoop导入中捕获已处理记录的数量?

时间:2018-05-24 05:17:37

标签: hadoop amazon-s3 sqoop sqoop2

要将数据从我的数据库复制到S3,我使用下面的命令。

object val

我能够复制数据,但我需要从同一命令获取已处理数据的计数,而不使用其他命令,如eval。因为同时其他记录可能被摄入源。

我想要的是捕获此记录数:

sqoop import -D mapreduce.job.name= xxx-D mapred.job.queue.name=user -Dhadoop.security.credential.provider.path=<path> -Dfs.s3a.server-side-encryption-algorithm=<xx>--options-file <path> --query "select col1,ID,UPDATETIME from db.table where UPDATETIME between to_date('2015-09-11 00:00:00','yyyy/mm/dd hh24:mi:ss') and to_date('2018-05-24 04:28:16','yyyy/mm/dd hh24:mi:ss') and \$CONDITIONS" --hive-delims-replacement ' ' --direct --m 1 --split-by ID  --target-dir <s3//path>

1 个答案:

答案 0 :(得分:0)

我找到了上述查询的方法。当您在下面传递sqoop命令时 subprocess编程并使用.communicate存储整个输出以及警告和信息消息。

sqoop_command ='sqoop import........'

process = subprocess.Popen(sqoop_command , stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)

rec_str = process.communicate()

rec_str包含输出。