我需要在2个Oracle表之间进行连接,然后通过Spark(Java)处理数据。这样做的最佳选择是什么?-利用本地Oracle连接功能,因此通过查询加载Spark中的单个数据集,如“从表1中选择*,表2中table1.fk=table2.pk”或-利用Spark连接功能加载2个不同的数据集(每个Oracle表一个),然后通过数据集功能执行连接Dataset.join?
谢谢你!
在进行连接操作之前,您可以在Oracle和Spark中创建一些连接查询的性能矩阵,并根据观察结果决定选择哪一个。
希望这些建议对理解是否使用spark有所帮助。
在这里,我将保留下面的答案,供您在spark选项中进行选择。
您可以通过以下两种方式进行操作:为每个表创建数据帧、执行联接操作、在spark内存中注册临时表之后执行sql查询,类似于oracle。这样做没有害处。另一种方法是为每个表创建数据集,并使用连接函数执行连接操作。在这里,两种方法的结果将是相同的,但从性能角度来看,数据集更优化,因为它将尝试利用rdd功能的额外优势,与仅spark数据帧相比,rdd功能更优化。
下面是数据集操作的示例代码,
Dataset<Row> jdbcDF1 = spark.read()
.format("jdbc")
.option("url", "oracle.jdbc.driver.OracleDriver")
.option("dbtable", "schema.table1")
.option("user", "username")
.option("password", "password")
.load();
Dataset<Row> jdbcDF2 = spark.read()
.format("jdbc")
.option("url", "oracle.jdbc.driver.OracleDriver")
.option("dbtable", "schema.table2")
.option("user", "username")
.option("password", "password")
.load();
jdbcDF1.join(jdbcDF1, jdbcDF1.col("id").equalTo(jdbcDF2.col("id")))
Spark 组件之间的网络连接问题会导致各式各样的警告/错误: SparkContext <-> Spark Standalone Master: 如果 SparkContext 不能连接到 Spark standalone master,会显示下面的错误 ERROR AppClient$ClientActor: All masters are unresponsive! Giving up. E
本文向大家介绍Oracle中的Oracle Golden Gate和Oracle Active Guard之间的区别,包括了Oracle中的Oracle Golden Gate和Oracle Active Guard之间的区别的使用技巧和注意事项,需要的朋友参考一下 Oracle Golden Gate和Oracle Active Data Guard是数据复制技术。它们都用于数据复制,但是策略不
我来自Java背景,刚接触Scala。 我正在使用Scala和Spark。但是我不明白我在哪里使用和。 有人能告诉我在哪种情况下我需要使用这两个操作符吗?和之间有什么区别吗?
问题内容: 我有一个列表,我想找到连续元素之间的区别: 您将如何编码find_diff()函数?我可以使用“ for”迭代器对此进行编码,但是我敢肯定,有一种非常简单的方法可以使用一个简单的内衬进行编码。 问题答案: 您可以利用,并列出理解: 在性能方面,似乎并没有太大的差异:
我想从两个表中删除相关的行。可能有外键,也可能没有。因此,可以肯定的是,我不想依赖外键及其在DELETE上的
得到一些问题与桌子布线。我需要为每个用户uniq购物车,在那里我将存储书籍。 当我在DB中打开AppUser表时,“cart_id”列始终为NULL。 购物车表只有id列-不确定是否应该这样 谢谢! 购物车