gpt4 book ai didi

hadoop - Hive 在读取期间强制执行架构?

转载 作者:可可西里 更新时间:2023-11-01 14:10:56 26 4
gpt4 key购买 nike

我在这里讲课时遇到的这两个语句的区别和含义是什么:

1. Traditional databases enforce schema during load time.

2. Hive enforces schema during read time.

最佳答案

您谈到了 Hadoop 和其他 NoSQL 策略如此成功的原因之一,所以我不确定您是否希望获得论文,但它就是这样!数据分析中额外的灵 active 和敏捷性可能促成了“数据科学”的爆炸式增长,只是因为它通常使大规模数据分析变得更容易。

传统的关系数据库在存储数据时考虑了模式。它知道第二列是一个整数,它知道它有 40 列,等等。因此,您需要提前指定您的模式并做好计划。这是“写入模式”——也就是说,在将数据写入数据存储时应用模式。

Hive(在某些情况下)、Hadoop 和许多其他 NoSQL 系统通常都是关于“读取模式”的——在从数据存储中读取数据时应用模式。考虑以下原始文本行:

A:B:C~E:F~G:H~~I::J~K~L

有几种方法可以解释这一点。 ~ 可以是分隔符,或者 : 可以是分隔符。谁知道?使用读取模式,没关系。您在分析数据时而不是在编写数据时决定模式是什么。这个例子有点荒谬,因为您可能永远不会遇到这种情况,但希望它能说明问题。

使用模式读取,您只需将数据加载到数据存储中,然后再考虑如何解析和解释。在这个解释的核心,读模式意味着先写你的数据,然后再弄清楚它是什么。 Schema on write 意味着先弄清楚你的数据是什么,然后再写入。


这里有一个权衡。其中一些是主观的,是我自己的意见。

写入模式的好处:

  • 为静态数据完成更好的类型安全和数据清理
  • 通常更高效(存储大小和计算),因为数据已经被解析

写入模式的缺点:

  • 您必须在存储数据之前提前计划您的模式(即,您必须进行 ETL)
  • 通常您会丢弃原始数据,如果您在摄取过程中出现错误,这可能会很糟糕
  • 很难对同一数据有不同的看法

读取时模式的好处:

  • 在加载时灵活定义数据的解释方式
    • 这使您能够随着时间的推移发展您的“架构”
    • 这允许您拥有不同版本的“架构”
    • 这允许更改原始源数据格式而无需合并为一种数据格式
  • 您可以保留原始数据
  • 您可以在不知道如何处理数据之前加载数据(这样您就不会把它丢在地上)
  • 使您能够灵活地存储非结构化、不干净和/或无组织的数据

读取模式的缺点:

  • 通常效率较低,因为您每次都必须重新解析和重新解释数据(对于 XML 等格式,这可能代价高昂)
  • 数据不是自记录的(即,您无法通过查看架构来弄清楚数据是什么)
  • 更容易出错,您的分析必须考虑脏数据

关于hadoop - Hive 在读取期间强制执行架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11764237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com