Hadoop hive中的模式规范化

Hadoop hive中的模式规范化,hadoop,hive,Hadoop,Hive,我在一次面试中遇到了一个问题,要设计一个模式。但我怀疑,在hive中设计模式时,我们是遵循规范化过程还是不需要??请帮助我理解使用Hive,一个好的做法是对数据进行非规范化 联接需要一个减缩器,这意味着数据已经在洗牌阶段进行了排序。如果需要对联接表中的字段进行筛选,则需要一个映射、一个随机、一个reduce(用于联接)和另一个映射进行筛选。 (除非有一个表足够小,可以放入映射器内存,默认情况下为10Mb) 映射(读取)->洗牌(排序)->减少(加入)->映射(筛选)->减少(写入) 在映射阶段对

我在一次面试中遇到了一个问题,要设计一个模式。但我怀疑,在hive中设计模式时,我们是遵循规范化过程还是不需要??请帮助我理解

使用Hive,一个好的做法是对数据进行非规范化

联接需要一个减缩器,这意味着数据已经在洗牌阶段进行了排序。如果需要对联接表中的字段进行筛选,则需要一个映射、一个随机、一个reduce(用于联接)和另一个映射进行筛选。 (除非有一个表足够小,可以放入映射器内存,默认情况下为10Mb)

映射(读取)->洗牌(排序)->减少(加入)->映射(筛选)->减少(写入)

在映射阶段对非规范化表中的字段进行过滤

映射(读取+过滤)->洗牌(排序)->减少(写入)

使用高级存储格式(ORCfile、Parquet等),您可以获得更好的性能,这些格式在数据中包含一些元数据,允许在过滤阶段跳过块(存储层上的谓词下推)


该答案仅在使用map reduce配置单元引擎时有效。使用带有Hive的另一个引擎(Tez、Spark等)或Hadoop软件中的另一个SQL(Impal、Drill等),您可能会观察到不同的行为

您可以在中找到有关联接的详细信息