datavane / datavines

Know your data better!Datavines is Next-gen Data Observability Platform, support metadata manage and data quality.
https://datavane.github.io/datavines-website/
Apache License 2.0
430 stars 143 forks source link

[Bug] [datavines engine] hive表使用spark引擎进行非空检查 #345

Open 954031894 opened 7 months ago

954031894 commented 7 months ago

Search before asking

What happened

在使用hive作为数据源,使用spark作为计算引擎时,发生报错,报错原因是不支持statement.setQueryTimeOut方法。 根据报错提示找到报错问题,法相与spark使用的hive-jdbc的jar包版本有关 我使用的是spark-2.4.8-bin-hadoop2.7,其中的hive-jdbc版本是1.2.1.spark2。该jar源码不支持该方法。 我看了其他spark2.4.x的版本,发现使用的都是1.2.1.spark2版本。 我尝试了修改hive得版本为2.1.0对spark2.4.8进行编译,但是由于hive版本跨度比较大,无法直接通过这种简单的方法修改hive版本。 我查看了一下spark3的hive版本,发现是2.3.7的,但是datavines不支持spark3,这种方法也无法成功使用spark引擎。 不知道测试使用的是什么spark版本,与我的spark2.4.8有什么不同

DataVines Version

1.0.0-SNAPSHOT

DataVines Config

no

Running Command

no

Error Exception

2024-01-26 16:45:12,232 INFO core.BaseDataVinesBootstrap: Reason: Method not supported

2024-01-26 16:45:12,233 INFO core.BaseDataVinesBootstrap: Exception StackTrace: java.sql.SQLException: Method not supported
at org.apache.hive.jdbc.HiveStatement.setQueryTimeout(HiveStatement.java:739)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:60)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation$.getSchema(JDBCRelation.scala:210)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:35)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:332)
at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:242)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:230)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:186)
at org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.scala:257)
at io.datavines.engine.spark.jdbc.source.JdbcSource.getData(JdbcSource.java:103)
at io.datavines.engine.spark.jdbc.source.JdbcSource.getData(JdbcSource.java:38)
at io.datavines.engine.spark.api.batch.SparkBatchExecution.registerInputTempView(SparkBatchExecution.java:76)
at io.datavines.engine.spark.api.batch.SparkBatchExecution.lambda$execute$0(SparkBatchExecution.java:52)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at io.datavines.engine.spark.api.batch.SparkBatchExecution.execute(SparkBatchExecution.java:51)
at io.datavines.engine.core.BaseDataVinesBootstrap.parseConfigAndExecute(BaseDataVinesBootstrap.java:79)
at io.datavines.engine.core.BaseDataVinesBootstrap.execute(BaseDataVinesBootstrap.java:43)
at io.datavines.engine.spark.core.SparkDataVinesBootstrap.main(SparkDataVinesBootstrap.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:855)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:161)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:184)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:930)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:939)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

Engine Type

spark-2.4.8-bin-hadoop2.7

Java Version

1.8

Screenshots

  1. datavines报错提示

  2. 根据报错信息找到报错位置spark2.4.8的jars的hive-jdbc版本是1.2.1.spark2(该版本没有setQueryTimeOut方法)

Are you willing to submit PR?

954031894 commented 7 months ago
  1. datavines报错提示 iShot_2024-01-29_10 59 27
  2. 根据报错信息找到报错位置spark2.4.8的jars的hive-jdbc版本是1.2.1.spark2(该版本没有setQueryTimeOut方法) iShot_2024-01-29_11 01 59
zixi0825 commented 7 months ago

你可以更换掉你们spark环境内的hive-jar的版本

954031894 commented 7 months ago

直接更换spark得hive相关jar包吗?这个的话已经尝试过了,还是报错,调用的一些函数找不到。修改spark2.4.8源码的hive版本也不行,同样是一些函数。

954031894 commented 7 months ago

我这边这个修改了hive-jdbc-1.2.1.spark2的HiveStatement中这个方法,没有让他抛出异常,而是声明了一个变量,并在该方法中进行赋值。目前不会抛出这个异常。 但是油抛出sql分析异常。我这边正在尝试解决。 我这边这些问题都发生在Hive表中,在doris中没有发现这些问题