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

使用spark streaming将avro数据集加载到Teradata时出现问题

岳浩
2023-03-14

我试图通过火花流(jdbc)将avro文件的数据集加载到Teradata表中。配置设置正确,加载在一定程度上成功(我可以验证数据行是否已插入表中),但中途我开始出现异常,加载失败。堆栈跟踪如下。关于可能导致这种情况的原因有什么线索吗?

18/02/08 17:27:42 ERROR executor.Executor: Exception in task 2.0 in stage 0.0 (TID 0)
java.sql.BatchUpdateException: [Teradata JDBC Driver] [TeraJDBC 16.20.00.02] [Error 1154] [SQLState HY000] A failure occurred while inserting the batch of rows destined for database table "database"."table". Details of the failure can be found in the exception chain that is accessible with getNextException.
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeBatchUpdateException(ErrorFactory.java:149)
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeBatchUpdateException(ErrorFactory.java:133)
    at com.teradata.jdbc.jdbc.fastload.FastLoadManagerPreparedStatement.executeBatch(FastLoadManagerPreparedStatement.java:2389)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.savePartition(JdbcUtils.scala:592)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$saveTable$1.apply(JdbcUtils.scala:670)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$saveTable$1.apply(JdbcUtils.scala:670)
    at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
    at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:926)
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1951)
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1951)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
    at org.apache.spark.scheduler.Task.run(Task.scala:99)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:322)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: [Teradata JDBC Driver] [TeraJDBC 16.20.00.02] [Error 1147] [SQLState HY000] The next failure(s) in the exception chain occurred while beginning FastLoad of database table "database"."table"
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDriverJDBCException(ErrorFactory.java:95)
    at com.teradata.jdbc.jdbc_4.util.ErrorFactory.makeDriverJDBCException(ErrorFactory.java:70)
    at com.teradata.jdbc.jdbc.fastload.FastLoadManagerPreparedStatement.beginFastLoad(FastLoadManagerPreparedStatement.java:966)
    at com.teradata.jdbc.jdbc.fastload.FastLoadManagerPreparedStatement.executeBatch(FastLoadManagerPreparedStatement.java:2210)

共有1个答案

巫马翰翮
2023-03-14

问题源于试图以追加模式将数据加载到现有表。快速加载不支持这一点。每次进程运行时,表都应该为空(也称为截断)。这对于在处理数据之前暂存数据非常有用。但不是为了存储它。

 类似资料:
  • 问题内容: 我一直在尝试使用json.net(https://dl.dropboxusercontent.com/u/2976553/json)解析json块,但是它未能说明json对象后面有文本。但是,如果您查看它在哪里引发异常 我检查了TokenType,它似乎不应该生成异常。我也修改了代码以使其忽略,但是它似乎没有解析任何内容。 我正在用这个.. 我已经将json粘贴到许多在线检查器中,他们

  • 问题内容: 我正在用Django开发应用程序。 我想将数据加载到模型中,即,但数据存储在xlsx文件中,即。 为了实现这一目标,我开发了以下脚本: 但是当我从Anaconda提示符下运行它时,我得到了 文件“ load_glossary.py”,模块7中的第7行, 引发AppRegistryNotReady(“应用尚未加载。”)django.core.exceptions.AppRegistryN

  • 我创建了一个avro配置单元表,并使用配置单元插入覆盖命令将数据从另一个表加载到avro表中。我可以在avro配置单元表中看到数据,但当我尝试将其加载到bigQuery表中时,会出现错误。表架构:- 我收到的错误:- 我使用以下命令将数据加载到bigquery中:-

  • 我用VueX,store.js 注释列表组件: 注释信息组件: 备注信息组件无法从备注列表中获取第一个对象

  • 我似乎无法使用Excel::Writer::XLSX将超过85,000行导出到. xlsx文件。导出超过85,000行数据会导致5KB文件中没有数据。当导出85,000条记录或90,000条记录(约40秒)时,脚本运行所需的时间大致相同。 85000行的文件是7.9MB,但90000行的文件只有5KB。 使用top监视导出脚本,我的perl脚本只显示大约1%的内存使用率,几秒钟后就会消失。我不熟悉