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

Spark-Oracle时区错误

景星光
2023-03-14

我正在运行spark作业以加载到Oracle。但我得到以下错误。

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1

ORA-01882:未找到时区区域

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:392)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:385)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1018)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:501)

这是我代码中的内容

val oracleProps = new java.util.Properties() 

oracleProps.put("driver", oracleDriver)
oracleProps.put("driver", oracleDriver)
oracleProps.put("user", oracleUser)
oracleProps.put("password", oraclePwd)
oracleProps.put("batchsize", oracleBatchSize)

dataframe.write.mode("overwrite").jdbc(oracleUrl, oracleBaseTable, oracleProps)

相同的代码适用于Spark-Shell,但不适用于Spark-Shell。相同的火花提交在其他集群上工作。感谢你的帮助!

共有2个答案

仇龙光
2023-03-14

我写了一个程序,使用Spark[version2.3.0.cloudera3]将数据从文件插入到oracle数据库。根据我的程序,Oracle数据库版本是Oracle数据库11g企业版发布11.2.0.1.0

我使用的是OracleJDBCojdbc8。jar。因此,我遇到了以下问题:

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1 
ORA-01882: timezone region not found.

现在,我将Oracle JDBC更改为:ojdbc6。jar,它与Oracle 11.2兼容。0.1.0。现在它工作得很好。

宋健柏
2023-03-14

我有这个错误在pyspark甲骨文jdbc连接-"ORA-01882:没有找到时区区域"。我是能够连接后设置oracle.jdbc.timezoneAsZone为假。

Oracle数据库11g企业版11.2版。0.4.0.使用的JDBC驱动程序-ojdbc8。罐子

df.write \
.format("jdbc") \
.option("url", "JDBC_URL") \
.option('driver', 'oracle.jdbc.driver.OracleDriver') \
.option("oracle.jdbc.timezoneAsRegion", "false") \
.option("dbtable", "SCHEMA.TABLE") \
.option("user", "USERID") \
.option("password", "PASSWORD") \
.mode("overwrite") \
.save()
 类似资料:
  • 我正在编写一个应用程序,使用JPA和GlassFish 3.1.2.2和EclipseLink 2.3.2。我正在使用Oracle DB 11g,并尝试使用TIMESTAMPTZ字段类型存储带有时区的日期和时间。 通过我的设置,我可以将带有时区的日期和时间保存到数据库中。(更新-实际上,当查看实际的SQL调用时,它只传递日期和时间。Oracle在保存到DB时必须附加时区)。 但是,在检索回数据时,

  • 有人知道为什么第一个查询会导致抛出此错误,而第二个查询会起作用吗? ORA-01882:未找到时区区域01882。00000-“未找到时区区域%s” > 导致错误:在时区选择系统标记(SELECT t.TIME_ZONE从SOME_TABLEt WHERE t.TIME_ZONE='美国/丹佛'和ROWNUM=1)从Dual 正确工作:选择时区的系统标记(选择美国/丹佛从SOME_TABLEt哪里

  • 问题内容: 我想在Apache Spark中启用单个集群,我安装了java和scala。我下载了Apache Hadoop 2.6的火花并解压缩。我试图转动火花壳,但抛出一个错误,此外,我无权访问shell中的sc。我从源代码编译,但存在相同的错误。我究竟做错了什么? 问题答案: 我刚刚开始学习Spark,希望在本地模式下运行Spark。我遇到了像你这样的问题。问题: java.net.BindE

  • 我有两个DB-DB1和DB2。DB1-“select dbtimezone from dual”返回+00:00。意思是UTC。 这两个表的表描述为created_date列的TIME STAMP和TIMEZONE。这里没有提到当地时区。 对于DB1和DB2中的会话时区,Oracle为什么采用dbtimezone?为什么会有这种不一致?我的目标是用UTC填充DB2中的created_time。

  • 我创建一个数据文件,导入一个大约8MB的csv文件,如下所示: 最后,我打印dataframe的分区数: 答案是2。

  • 现在,当我执行这个查询时: 请帮助我 1。既然分区不在ITEM_COLOR列上,Oracle将如何确定要转到哪个分区? 2。上面的查询不会从分区中受益吗? 3。SQL查询是否需要在WHERE子句中包含分区列,以便从分区中受益。 4。在分区的情况下如何使用索引?