首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在使用Spark Dataframe中的numPartitions、lowerBound、upperBound从oracle获取大表,但无法获取完整数据

我正在使用Spark Dataframe中的numPartitions、lowerBound、upperBound从oracle获取大表,但无法获取完整数据
EN

Stack Overflow用户
提问于 2018-07-02 23:49:26
回答 1查看 1K关注 0票数 1

我正在使用Spark Dataframe中的numPartitions,lowerBound,upperBound从oracle.but中获取大表,它给我的数据只相当于一个分区。假设分区数为10,记录总数为100,那么我在Hive中只能摄取10条记录(记录总数/numPartitions)。下面是我的代码片段

代码语言:javascript
复制
val hiveContext = SparkApp.getHiveContext("AppName")   
val jdbcUsername = "MYUSERNAME"
val jdbcPassword = "MYPASSWORD"
val jdbcDatabase ="DBNAME"
val jdbcUrl = "jdbc:oracle:thin:@//hostname:1522/servicename"
val lowerBound = 1
val totalRecords = 100
val partitions = 10
val orclTableName = "MYTEST_TABLE"

val columnName = "rownum"
val connectionProperties = new Properties()
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")
connectionProperties.put("driver","oracle.jdbc.driver.OracleDriver")

val orclTableDF = hiveContext.read.jdbc(url=jdbcUrl,table=orclTableName,columnName = columnName,lowerBound=lowerBound, upperBound= totalRecords , numPartitions=partitions,  connectionProperties=connectionProperties)

orclTableDF.write.saveAsTable("MYTEST_NEW_TABLE")

你能告诉我我错过了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 00:18:50

如果没有partitionColumn,参数读取将不会并行化。请提供分区键的列名。确保使用该键对数据进行均匀分区,否则可能会出现数据倾斜问题。如果您的数据不是均匀分区的,那么使用rownum函数通过mod运算符均匀分布您的数据。

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

https://stackoverflow.com/questions/51139764

复制
相关文章

相似问题

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