首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与sqoop相比,在jdbc方面,为什么slower比sqoop慢?

与sqoop相比,在jdbc方面,为什么slower比sqoop慢?
EN

Stack Overflow用户
提问于 2019-05-24 08:15:59
回答 2查看 1.8K关注 0票数 4

可以理解的是,当从oracle db迁移/加载到hdfs/parquet时,它更倾向于使用SQOOP,而不是使用JDBC驱动程序。

火花应该比处理时快100倍,对吗?那火花有什么问题?为什么人们在从oracle表加载数据时更喜欢SQOOP?

请建议我应该做什么,以使火花更快的时候,从甲骨文加载数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-24 09:58:47

当Spark知道如何并行查询时,它是快速的。如果您只是在执行单个查询,那么Spark就不知道该做什么。在使用lowerBound读取数据时,可以使用参数numPartitionsupperBoundnumPartitions来提高速度,但这实际上取决于表的设计。

您可以找到更多的文档这里

票数 4
EN

Stack Overflow用户

发布于 2019-05-28 08:09:20

亚历克斯的回答中已经提到了主要的问题。

我只想补充一个例子,

代码语言:javascript
复制
from pyspark.sql import SparkSession

spark = SparkSession.builder.master("local[4]").appName("Test-JDBC").getOrCreate()

ds = spark.read.jdbc("jdbc:mysql://localhost:3306/stackexchange", "(select min(id), max(id) from post_history) as ph",
                     properties={"user": "devender", "password": "*****", "driver": "com.mysql.jdbc.Driver"})

r = ds.head()
minId = r[0]
maxId = r[1]

ds = spark.read.jdbc("jdbc:mysql://localhost:3306/stackexchange", "(select * from post_history) as ph",
                     properties={"user": "devender", "password": "*****", "driver": "com.mysql.jdbc.Driver"},
                     numPartitions=4, column="id", lowerBound=minId, upperBound=maxId)

count = ds.count()
print(count)

有关更多细节,请访问https://gist.github.com/devender-yadav/5c4328918602b7910ba883e18b68fd87

注意: Sqoop自动执行边界查询以获取列拆分的最小值、最大值(该查询也可以被重写)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56288481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档