如何通过Spark加速将Oracle视图加载到HDFS?
为了加快表的加载速度,我们获取rowid,对其进行散列,并对其进行分区。代码如下。然而,视图并没有rowid,并且在不确定划分哪个列的情况下,我们没有一个通用的并行摄取解决方案。有没有一种方法可以并行地摄取视图,而不具体化视图如何通过Spark加速将Oracle视图加载到HDFS?,oracle,apache-spark,parallel-processing,apache-spark-sql,Oracle,Apache Spark,Parallel Processing,Apache Spark Sql,为了加快表的加载速度,我们获取rowid,对其进行散列,并对其进行分区。代码如下。然而,视图并没有rowid,并且在不确定划分哪个列的情况下,我们没有一个通用的并行摄取解决方案。有没有一种方法可以并行地摄取视图,而不具体化视图 spark.read.format("jdbc") .option("url", url) .option("user", username) .option("password", new String(decrypt(decodeBase64(
spark.read.format("jdbc")
.option("url", url)
.option("user", username)
.option("password", new String(decrypt(decodeBase64(encryptedPassword), key), "UTF-8"))
.option("driver", "oracle.jdbc.driver.OracleDriver")
.option("dbtable", query)
.option("numPartitions", numPartitions)
.option("lowerBound", 0)
.option("upperBound", numPartitions)
.option("partitionColumn", s"mod(ora_hash(rowid),${numPartitions})+1")
.option("oracle.net.networkCompression", "on")
.option("SDU", OracleSDU)
.option("fetchsize", FetchSize)
.load()
第一个想法:从视图中使用的表中公开rowid,或者作为键执行一些
row_number()(按rowid排序)
不在我的视图中,因为可能有很多joibs在下面