Spark SQL----DISTRIBUTE BY子句

Spark SQL----DISTRIBUTE BY子句

一、描述

DISTRIBUTE BY子句用于根据输入表达式对数据进行重新分区。与CLUSTER BY子句不同,这不会对每个分区内的数据进行排序。

二、语法

sql 复制代码
DISTRIBUTE BY { expression [ , ... ] }

三、参数

  • expression
    指定产生由一个或多个值、运算符和SQL函数组成的组合。

四、例子

sql 复制代码
CREATE TABLE person (name STRING, age INT);
INSERT INTO person VALUES
    ('Zen Hui', 25),
    ('Anil B', 18),
    ('Shone S', 16),
    ('Mike A', 25),
    ('John A', 18),
    ('Jack N', 16);

-- Reduce the number of shuffle partitions to 2 to illustrate the behavior of `DISTRIBUTE BY`.
-- It's easier to see the clustering and sorting behavior with less number of partitions.
SET spark.sql.shuffle.partitions = 2;

-- Select the rows with no ordering. Please note that without any sort directive, the result
-- of the query is not deterministic. It's included here to just contrast it with the
-- behavior of `DISTRIBUTE BY`. The query below produces rows where age columns are not
-- clustered together.
SELECT age, name FROM person;
+---+-------+
|age|   name|
+---+-------+
| 16|Shone S|
| 25|Zen Hui|
| 16| Jack N|
| 25| Mike A|
| 18| John A|
| 18| Anil B|
+---+-------+

-- Produces rows clustered by age. Persons with same age are clustered together.
-- Unlike `CLUSTER BY` clause, the rows are not sorted within a partition.
SELECT age, name FROM person DISTRIBUTE BY age;
+---+-------+
|age|   name|
+---+-------+
| 25|Zen Hui|
| 25| Mike A|
| 18| John A|
| 18| Anil B|
| 16|Shone S|
| 16| Jack N|
+---+-------+
相关推荐
山猪打不过家猪37 分钟前
(五)毛子整洁架构(分布式日志/Redis缓存/OutBox Pattern)
分布式·缓存
暮雨疏桐5 小时前
MySQL SQL Mode及其说明
数据库·sql·mysql·sql mode
jstart千语5 小时前
【Redis】分布式锁的实现
数据库·redis·分布式
CONTONUE6 小时前
运行Spark程序-在Idea中(二)
大数据·spark·intellij-idea
计算机人哪有不疯的6 小时前
图文展示HDFS、YARN、MapReduce三者关系
大数据·spark
祈5336 小时前
MapReduce 的工作原理
大数据·mapreduce
Agatha方艺璇6 小时前
MapReduce报错 HADOOP_HOME and hadoop.home.dir are unset.
大数据·hadoop·mapreduce
@十八子德月生8 小时前
8天Python从入门到精通【itheima】-1~5
大数据·开发语言·python·学习
元6338 小时前
Hadoop集群的常用命令
大数据·hadoop
掘金-我是哪吒9 小时前
分布式微服务系统架构第125集:AI大模型
分布式