hadoop - 我们可以在配置单元中创建一个同时具有分区和分桶的表吗?

标签 hadoop hive bigdata

我们可以在 hive 中创建一个同时具有分区和分桶的表吗?

最佳答案

是的。
分区是将数据分成 HDFS 上的多个目录。每个目录都是一个分区。例如,如果您的表定义类似于

CREATE TABLE user_info_bucketed(user_id BIGINT, firstname STRING, lastname STRING)
COMMENT 'A bucketed copy of user_info'
PARTITIONED BY(ds STRING)
CLUSTERED BY(user_id) INTO 256 BUCKETS;

然后你将在 hdfs 上拥有像这样的目录

/user/hive/warehouse/user_info_bucketed/ds=2011-01-11/
/user/hive/warehouse/user_info_bucketed/ds=2011-01-12/
/user/hive/warehouse/user_info_bucketed/ds=2011-01-13/

Bucketing 是关于你的数据如何在一个分区内分布的,所以你会在 hdfs 上有文件,比如

/user/hive/warehouse/user_info_bucketed/ds=2011-01-11/000000_0
/user/hive/warehouse/user_info_bucketed/ds=2011-01-11/000000_1
...
/user/hive/warehouse/user_info_bucketed/ds=2011-01-11/000000_255
/user/hive/warehouse/user_info_bucketed/ds=2011-01-12/000000_0
/user/hive/warehouse/user_info_bucketed/ds=2011-01-12/000000_1
...
/user/hive/warehouse/user_info_bucketed/ds=2011-01-12/000000_255

引用: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables http://www.hadooptpoint.com/hive-buckets-optimization-techniques/

关于hadoop - 我们可以在配置单元中创建一个同时具有分区和分桶的表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38559204/

相关文章:

mysql - 通过算法为 SQL 中的大型数据集创建列名

mysql - 哪个数据库管理器适用于 100Go 表?

hadoop - Hadoop 中的容错

sql-server - 有什么办法可以将数据从s3导入到mssql

mysql - 如何优化多表连接 View 以获得更快的响应?

hadoop - 使用Hive从使用hadoop中的map reduce程序生成的数据中获取数据

hadoop - 使用Pig脚本读取配置单元表

scala - 无法解决 Spark 作业中的符号拆分问题

hadoop - 使用 Hive 时为 "Too many fetch-failures"

hadoop - 具有选定列的HDFS集群内复制