首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么每一行都必须是唯一的?

为什么每一行都必须是唯一的?
EN

Stack Overflow用户
提问于 2018-06-26 08:44:19
回答 1查看 26关注 0票数 -2

我正在阅读spark.sql.execution.datasources.jdbc.JDBCRelation的源代码。

以下是源代码中的注释。

在给定分区示意图(整型列、多个分区以及列值的上下限)的情况下,为每个分区生成

子句,以便表中的每一行只出现一次。

我的问题是:

  1. 为什么每一行都必须是唯一的?
  2. 有什么例子吗?动机是什么?
  3. 如果我们有重复的怎么办?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-26 08:58:57

注释是脱离上下文的,您应该指出注释在代码中的位置,但我猜测spark的JDBC连接器需要将关系表拆分到多个分区中,以便创建分布式RDD,因此需要对其进行分区。要将表拆分为多个部分,需要创建具有多个WHERE子句的多个数据切片,但每条记录只能转到一个分区,以避免创建重复项。

例如,如果您有一张表

代码语言:javascript
复制
table tbl
---------
letter | number
a      |1 
b      |2 
a      |3
c      |4 

您可以使用WHERE number <3WHERE number >=3将其拆分为两个部分,但如果您使用WHERE number <=3WHERE number >=3,您最终会得到两个分区中使用的一条记录。所以你不需要在源表中有唯一的行,注释适用于spark如何分割关系,当它这样做时,它必须确保每条记录只到一个分区。

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

https://stackoverflow.com/questions/51033465

复制
相关文章

相似问题

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