整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

12.2示例

hadoop 小红牛 19℃ 0评论

让我们看一下如何用Hive查询我们在前面几章使用的气象数据集。第一个 步骤是把数据加载到Hive管理的存储。在这里,我们将让Hive把数据存 储在本地文件系统。稍后我们会介绍如何把表存储到HDFS。

和RDBMS —样,Hive把数据组织成表。我们使用CREATE TABLE语句为气象数据新建一个表:

CREATE TABLE records (year STRING, temperature INT, quality INT)ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

第一行声明一个 records 表,包含三列:year, temperature 和 quality。还必须指明每一列的数据类型,在这里,年为字符串类型,另外两列为整 数型。

到目前为止,所用的SQL都是我们所熟悉的。但是接下来的ROW FORMAT 子句是HiveQL所特有的。这个子句所声明的是数据文件的每一行是由制表 符分隔的文本。Hive按照这一格式读取数据:每行三个字段,分别对应于 表中的三列,字段间以制表符分隔;每行以换行符分隔。

接下来,我们可以向Hive输入数据。这里出于探索的目的,只用一个很小 的样本数据集:

LOAD DATA LOCAL INPATH 'input/ncdc/micro-tab/sample.txt'
OVERWRITE INTO TABLE records;

这一命令告诉Hive把指定的本地文件放入其仓库目录中。这只是一个简单 的文件系统操作。这个操作并不解析文件或把它存储为内部数据库格式, 因为Hive并不强制使用任何特定文件格式。文件以原样逐字存储,Hive并

不会对文件进行修改。

在这个示例中,我们把Hive表存储在本地文件系统中(fs.default.name
设为默认值file:///)。在Hive的仓库目录中,表存储为目录。仓库目录 由选项 hive.metastore.
warehouse.dir 控制,默认值/user/hive/warehouse。

这样,records表的文件便可以在本地文件系统的/user/hive/warehouse/records目录中找到:

% Is /user/hive/warehouse/record/ sample.txt

在这个示例中,我们现在只有一个文件sample.txt,但是在一般情况下,可 以有多个文件,而且Hive会在查询表的时候读入所有这些文件。

LOAD DATA语句中的OVERWRITE关键字告诉Hive删除表对应目录中已有 的所有文件。如果省去这一关键字,Hive就简单地把新的文件加入目录(除 非目录下正好有同名的文件,此时将替换掉原有的同名文件)。

数据现在已经在Hive中,我们可以对它运行一个査询:

hive> SELECT year, MAX(temperature)
    >FROM records
    >WHERE temperature != 9999
    >AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9)
    >GROUP BY year;
    1949 111
    1950 22

这个SQL査询没什么特别的:它是一个带GROUP
BY子句的SELECT语 句。这个査询根据年份对行进行分组,然后使用MAX()聚集函数在每个年
份组中找到最高气温。Hive的优势在于把这个査询转化为一个MapReduce
作业并为我们执行这个作业,然后把结果打印输出到控制台。虽然Hive和 其他数据库有一些细微的差别,例如Hive支持的SQL的结构以及可以査询
中数据的格式等——我们在本章中将探究差别——但能够在原始数据上执行 SQL查询,才彰显出Hive的强大功能。

转载请注明:全栈大数据 » 12.2示例

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址