前言:

  • Hive可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。在学习Hive之前 我们先了解下结构化数据,半结构化数据以及非结构化数据的区别。
1.结构化数据
  • 结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子:
id      name    age     gender
1       lyh     12      male
2       liangyh 13      female
3       liang   18      male
  • 所以,结构化的数据的存储和排列是很有规律的,这对查询和修改等操作很有帮助。但是,显然,它的扩展性不好(比如,我希望增加一个字段,怎么办?)。
2.半结构化数据
  • 半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。
    半结构化数据,属于同一类实体可以有不同的属性,即使他们被组合在一起,这些属性的顺序并不重要。
    常见的半结构数据有XML和JSON,对于对于两个XML文件,第一个可能有
<person>
<name>A</name>
<age>13</age>
<gender>female</gender>
</person>

第二个可能为:

<person>
<name>B</name>
<gender>male</gender>
</person>
  • 从上面的例子中,属性的顺序是不重要的,不同的半结构化数据的属性的个数是不一定一样的。有些人说半结构化数据是以树或者图的数据结构存储的数据,怎么理解呢?上面的例子中,<person>标签是树的根节点,<name>和<gender>标签是子节点。通过这样的数据格式,可以自由地表达很多有用的信息,包括自我描述信息(元数据)。所以,半结构化数据的扩展性是很好的。
3.非结构化数据
  • 顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。