大数据面试之hive和传统数据库之间的区别

1、写时模式和读时模式

传统数据库是写时模式,在load过程中,提升了査询性能,因为预先解析之后可以对列建立索引,并压缩,但这样也会花费更多的加载时间。

Hive是读时模式,1 oad data非常迅速,因为它不需要读取数据进行解析,仅仅进行文件的复制或者移动。

读时模式VS写时模式

在传统数据库里,表的模式是在数据加载时强制确定的。如果在加载时发现数据不符合模式,则被拒绝加载数据。因为数据是在写入数据库是对照模式进行检查,因此这一设计有时被称为“写时模式”(schema on write)。

在另外一方面,Hive对数据的验证并在不加载数据时进行,而在查询时进行。这称为“读时模式”(schema on read)。

在另外一方面,Hive对数据的验证并在不加载数据时进行,而在查询时进行。这称为“读时模式”(schema on read)。

用户需要在这两种方法之间权衡。读时模式可以使得数据加载非常迅速。这是因为它不需要读取数据,进行“解析”,再进行序列化以数据库内部格式存入磁盘。数据加载仅仅是文件的复制和移动。这一方法也更为灵活:试想,针对不同的分析任务,同一个数据可能会有两个模式。Hive使用‘’外部表’时,这种情况是可能发生的。

写时模式有利于提升查询性能。因为数据库可以对列进行索引,并对数据进行压缩。但是作为权衡,此时加载数据会花更多时间。此外没在很多加载时模式未知的情况下,因为查询尚未确定,因此不能决定使用何种索引。这些情况真是Hive“长袖善舞”的地方!

2、数据格式。

Hive中没有定义专门的数据格式,由用户指定,需要指定三个属性:列分隔符,行分隔符,以及读取文件数据的方法。数据库中,存储引擎定义了自己的数据格式。所有数据都会按照一定的组织存储

3、数据更新。

Hive的内容是读多写少的,因此,不支持对数据的改写和删除,数据都在加载的时候中确定好的。数据库中的数据通常是需要经常进行修改

4、执行延迟。

Hive在查询数据的时候,需要扫描整个表(或分区),因此延迟较高,只有在处理大数据是才有优势。数据库在处理小数据是执行延迟较低。

5、索引。

Hive比较弱,不适合实时查询。数据库有。

6、执行。

Hive是 Mapreduce,数据库是 Executor

7、可扩展性。

Hive高,数据库低

8、数据规模。

Hive大,数据库小

猜你喜欢

转载自blog.csdn.net/qq_42706464/article/details/109167114