当前位置: 首页 > 知识库问答 >
问题:

[Vertica][VJDBC](100172)服务器拒绝了一行或多行

董高逸
2023-03-14

在使用SQOOP将数据从Impala加载到Vertica时,我遇到了以下错误。

错误:java.io.ioException:无法导出数据,请在org.apache.sqoop.mapreduce.textexportMapper.map(textexportMapper.java:112)在org.apache.sqoop.mapreduce.textexportMapper.map(textexportMapper.java:39)在org.apache.sqoop.mapreduce.mapper.run(Mapper.java:145)在org.apache.sqoop.mapreduce.mapreduce.mapper.run)在org.apache.hadoop.mapred.maptask.run(maptask.java:341)在org.apache.hadoop.mapred.yarnchild$2.run(yarnchild.java:163)在java.security.accessController.doas(本机方法)在javax.security.auth.subject.doas(subject.java:422)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation.java:1671)在ChupdateException:[Vertica]VJDBC服务器拒绝了一行或多行。在org.apache.sqoop.mapreduce.asyncsqlRecordWriter.write(asyncsqlRecordWriter.java:233)在org.apache.sqoop.mapreduce.asyncsqlRecordWriter.java:46)在org.apache.hadoop.mapreduce.maptask$newDirectOutputCollector.write(maptask.java:658)在lib.map.wrappedmapper$context.write(wrappdmapper.java:112)at org.apache.sqoop.mapreduce.textexportmapper.map(textexportmapper.java:84).....................................................................................................在com.vertica.jdbc.sstatement.processBatchResults(未知源)在com.vertica.jdbc.spreparedStatement.executeBatch(未知源)在org.apache.sqoop.mapreduce.asyncsqlOutputFormat$asyncsqlExecThread.run(asyncsqlOutputFormat.java:231)

我正在运行以下命令:

sudo-U impala sqoop导出-dsqoop.export.records.per.statement=xxx--驱动程序com.vertica.jdbc.driver--连接jdbc:vertica://host:5433/db--用户名名称--密码pw--表表--导出-dir/some/dir-m 1--输入-字段--由'\t'终止--输入-行--由'\n'终止--批处理

不是每次都提出这个错误。我进行了几次成功的测试,加载了超过200万行的数据。所以我猜可能有一些坏数据在被拒绝的行中包含特殊字符。这很烦人,因为当出现此错误时,mapreduce作业将回滚并重试。在这种情况下,目标表中会有大量重复数据。

是否有人知道是否有任何sqoop导出参数可以被设置为处理特殊字符,或者是否有任何方法可以跳过坏数据,这意味着禁用回滚?谢了!

共有1个答案

徐涵亮
2023-03-14

这可能不仅仅是特殊的字符。例如,如果尝试将'abc'填充到数字字段中,该行将被拒绝。尽管您得到了这个错误,但我相信直到加载和所有可以提交的数据都应该提交之后才会出现这个错误(但我会验证这一点)。如果隔离“丢失”的行,就可以找出数据或字段定义的问题所在。

需要寻找的常见事物:

  1. 将字符类型数据填充到数字字段中(可能是隐式转换,或者仅在值为非空时才显示)。
  2. null值放入not null字段
  3. 计数字符和varchar八位元组等效。varchar(x)表示八位字节,但是一个UTF-8字符可以有多个八位字节。
  4. 与#3类似,字符串太长,无法放入指定的字段。
 类似资料:
  • 我尝试在3台机器上作为集群运行kafka,我已经在所有机器上配置了Zookeeper。现在我尝试在第一台机器上启动kafka服务器,使用 它给出的错误是 kafka安装在路径 /tmp/kafka/kafka_2.11-1.1.0/中,kafka日志在路径 /var/lib/kafka中。我已经以root用户身份登录。但我仍然收到这些错误。我检查了kafka目录bin中. sh文件的权限。所有这些

  • 问题内容: 我试图在我的resitfy服务器上使用Express Cors,但它似乎并未拒绝来自其他IP的请求。我在本地工作,所以我尝试将来源设置为随机的公共IP,但我的所有请求仍在处理中 这是我的路线: 这是我的cors.json文件,其中设置了随机IP: 在路线上设置了cors后,我可以在邮递员中看到以下内容,但请求仍在处理中?我希望访问被拒绝。 Access-Control-Allow-Or

  • 拒绝服务(DoS)攻击是黑客企图使网络资源不可用的一种攻击。它通常会临时或无限地中断主机,让正常使用的用户无法访问目标服务。这些攻击通常针对托管在关键任务Web服务器(如银行,信用卡支付网关)上的服务。 DoS的症状 网络性能异常缓慢。 特定网站不可用。 无法访问任何网站。 收到的垃圾邮件数量大幅增加。 长期拒绝访问网络或任何互联网服务。 特定网站不可用。 动手实践 第1步 - 启动WebGoat

  • 我对PHP和XAMPP相当陌生。我现在正在用我的电脑开发Java和php。所以我的计算机中已经安装了mysql服务器。我成功地安装了xampp。但是当我试图访问phpMyAdmin时,它给我一个错误,说 (这不是实际错误,但这是它的意思..) 我尝试停止当前的MySQL服务并重新安装它。我尝试配置config.inc.php,我认为这是一种实现这一点的方法。但我对此无能为力。 谁能告诉我如何配置和

  • 我正在尝试在windows server 2008 R2上使用Apache 2.4服务器配置Git服务器。 我将它添加到httpd.conf文件中: 我在中创建了一个存储库。我键入以下命令,用远程机器克隆它: 我收到了以下错误: 在我的阿帕奇错误中.log我可以看到这个: 我想知道这是不是因为我没有匿名访问git服务器的权限? 我需要自动创建用户来使用git服务器吗? 这个问题不能帮助我解决我的问

  • 我最终(认为)成功地安装了PostgreSQL和de psycopg2(我使用Windows)。顺便问一下,有什么方法可以检查它是否正常工作? 现在的问题是,我无法启动服务器,当我键入'python manage.py runserver'时,它显示(在命令末尾): 编辑1:我尝试将settings.py端口更改为5432,但现在错误消息是相同的,只是更改端口: 配置文件是这样的吗?我该换点东西吗