热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

deletehive_Hive的基本概念和常用命令

一、概念:1、结构化和非结构化数据结构化数据:固有的键值对非结构数据:没有固定的键值对,没有明确的映射关系所以就可以理解下面

一、概念:

1、结构化和非结构化数据

结构化数据:固有的键值对

非结构数据:没有固定的键值对,没有明确的映射关系

所以就可以理解下面这句话:hive是由facebook开源用于解决海量结构化日志的数据统计项目。

2、Hive是基于Hadoop文件系统上的数据仓库架构,它为数据仓库的管理提供了许多功能:数据ETL(抽取、转换和加载)、数据存储管理和大型数据集的查询和分析能力。

RDBMS(关系型数据库)

OLTP(联机事务处理过程):一组事务同时去执行,低延迟,查询为主。

ACID(原子性、一致性、隔离性、持久性)

OLAP(联机分析处理过程):以数据仓库为基础,高延迟,分析为主。

3、Hive定义了类SQL语言-Hive QL(HQL),允许用户进行和SQL相似的操作,它可以将结构化的数据文件映射为一张数据表,并提供简单的SQL查询功能,同时允许开发人员方便的使用MR操作,可以将SQL语言转换为MR任务运行。

二、官网:

25e006b0c8de72fb52e6dd9fb007db78.png

三、ETL

E:Extract 数据抽取

T:Transform 数据转换

L:Load数据装载

ETL是将业务系统的数据经过抽取、清洗转换之后,装载到数据仓库的过程。目的是将分散、零乱、标准不统一的数据整合到一起。例如项目日志信息、数据爬虫信息等。就可以提供决策分析依据了。

数据抽取:把不同的数据源数据抓取过来,存到某个地方。

数据清洗:过滤哪些不符合要求的数据或修正数据之后再进行抽取。不完整数据:比如信息缺失。错误数据:日期格式不正确、日期越界、字符串出现空格等重复数据:需要去重等

数据转换:不一致的数据进行转换,比如一个职工有职工号和人事号,学生有身份证号和学号等

常见ETL工具:Oracle的OWB、SQL Server的DTS、SSIS服务、Informatic等等,工具可以快速建立起ETL工程,屏蔽了复杂的编码任务、提高了速度,降低了难度,但是缺少灵活性。

SQL方法优点是灵活,提高了ETL效率,但是编码复杂,对技术要求高。

Hive结合了前面两种的优点。

四、安装Hive

可参考之前安装Hive的文档教程《CentOS6.5安装Hive-1.2.2》。

也可以进入官网参考

找到Getting Started Guide

4492e6db76bd619d7e95b7cd7f60ac30.png
4492e6db76bd619d7e95b7cd7f60ac30.png

选择Running Hive

105e5d4af73d298ff77cc36b6f4ac22d.png
b46a43b2c5e1521d1a76ab76f1f043fe.png

五、常用命令

安装完成后我们进入hive

e5d487e59786403f8f47334beb7863be.png

在官网上有命令使用的文档

78fc938ad99266add22a82f11ed3e16f.png

文档内容

adbbd9aec40e90c565a2bb91f1158ed7.png

我们使用一些命令:

查看数据库show databases;

c09a68ded1c905d4ef94065180f729a0.png

创建数据库show database 库名

eb1b17d9522793c2114c397c9b1e2a6f.png

可以查看HDFS上

a9d8b428f233334e9cfd752ca2a163a9.png

使用数据库use 库名

b01b6bc130053b955d0bc6f9f93f3c5f.png

创建表的数据类型,我们可以查看官网

6862bed8e48d0f26efd9d2b4eb7033b8.png

就可以找到所有的数据类型了

8fd504415e801bf5df7ddc3a1edf10d8.png

创建表的时候,如果字段是关键字,则需要加反飘号`(Tab键上面)。

那关键字有哪些?

12eaa0875f2af84c9bf419aa8c633ee6.png

比如

7de65415d6f9f0e18631a3a3995bc048.png

报错

FAILED: ParseException line 2:0 Failed to recognize predicate 'date'. Failed rule: 'identifier' in column specification

3a88f092e073fe5d5c0868c8141d1236.png

所以我们改为:

23052d2104c5d0ec1f64843457f273f5.png

但是我们依然不建议使用关键字,尽量去避免,不要使用。我们修改下字段名

4da2bceef27614ce9bba1e2bab9d57b8.png
69b40a1e43ded7a169b42bd41149dbde.png

这其中有两个小细节:第一CTRL+L清屏 第二从记事本复制表语句的时候前面不要有空格,否则会报错,Display all 528 possibilities? (y or n)。

我们再看数据加载

8aaacb5c05b3befe95bce327eb2ac679.png

我们尽量不要使用insert、update、delete,我们可以使用load,所以我们点击load

dd0eeb9f9996ee013b663751587020c4.png

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

如果加Local表示Linux本地的数据文件

如果不加Local,表示HDFS上的数据文件

我们在Linux上准备一个数据文件

b330890855e854d616409ed142fc1caf.png

我们先加载数据

load data local inpath '/data/hivetest/stu_info_local' into table gjz_error;

5cd92362f4f822afc8bdfdbf322cae7e.png

我们查看数据,数据全部是NULL,因为hive默认的分隔符是^A,也就是001,而我们的分隔符是一个tab键。

65c607b02c45e3b70c95aa90ab7a8cc0.png

我们把分隔符改为^A(先按Ctrl+V,再按Ctrl+A)

3b5a03244d85a3f501c06fceacdfda1f.png

然后我们重新导入数据,发现数据已经导入了

3a20975e0beaab455bd3bdecc151342a.png
eace53dfb28f9803d5a67542e91196e3.png

我们再将数据文件上传到HDFS上

f22a39381c749f03654e680c2290c473.png
12eefac4c1603fe450242e7ea1677ea7.png

创建数据表

5b912726dff68fec5a2a37ebbe451f8f.png
53fac0becc5c68634982a7a8aa3d757e.png

我们导入数据

7fc9df2431633af6327ce15bc8c0f09f.png
46af788e6ad0ca677a176c474f93f1dd.png

此时我们查看HDFS上,发现原来的数据也不在了

4d961c07ffffb5a785602db584099818.png

但是数据已经加载到hive了

687ef35b3e96af73b02271b0aa34b36c.png

另外数据文件已经在新的目录下了

ec513322ac7da701bfddaab5b2741efd.png

所以不加local是剪切移动的过程,而加local是复制的过程。

前面的问题:如果我们的数据不是默认的分隔符,即不是^A该怎么办呢?

我们准备文件

d47ebd6299a7c19ac98321d0b8d71896.png

准备数据,将数据分隔符改为

e716ea120c4376fd4344044d2b7aa139.png

我们看官网上这个部分

2481d0cfc351fff94cb6a75aef04ee65.png

我们重新建表,加入数据

create table hive_table_local_format(

id int,

name string

)row format delimited fields terminated by ''

dcb3400936d11749e266e11f79fbe185.png

Hive在HDFS文件系统上的结构

我们在test库下面创建表

c9cb878d66f71bc8ac5651186ffb5a3b.png

导入数据

9bf14c35e4a263497be7836d03b54e66.png

我们查看

/user/hive/warehouse/test.db/hive_table_local_format

953851c62012e6299569f7ff7f461757.png

我们可以得到

af963e31b061e4dee9efc41abc05c61b.png

元数据库开始是derby,只能开启一个客户端,再开启一个会话启动会报错,所以我们改变了元数据库为Mysql,其中可选的是:

35fc6365117cb48c7ae853d2815dbd2d.png

我们创建一个数据库

create database stu_test

6d72964f9eac64ec2ab6dcf2d83c3169.png

使用数据库并创建表

b59132c7be27e69c8659463e25def476.png

我们准备一个数据文件

b5c5e6d099f2ed06341ec06e974fc03c.png

将文件上传到HDFS上

我们先创建两个目录

1fdca08017494d43228803fba32aa7c3.png

我们把数据上传

c0db06ee200d69cd3a84640f22a0c8d3.png
d76793eb33c857776261e687d9759e98.png
043fa5c21d9db377b33488ce655ebf79.png

我们加载数据到hive中

在加载之前我们可以看到,我们看到stu_test中没有数据

85a7a02b62fda48d1a34503cdf942ccc.png

我们加载数据

6b2031a8cbc02243ce582f298d156dfa.png
86315c3a4dc4ed4975fb8826b99f3c61.png

我们再加载第二个数据

2d962b0c15f138144cd163c909bf2be5.png
c7579a575a4b643bb6065bcf0a31b010.png

注:我们会发现,自动重命名了。

我们查看我们表的信息:

  1. show create table
  2. desc [extended][formatted] table
  3. 元数据库

或者

3ce13212e575f5c442c6022c9d670bf3.png

或者

827e8a7d2ffcb61ed75bb24fb9957656.png

或者

57660e694da08da66c9dbccf6683778e.png

我们查看Tals

b5e1de15d72dbdef4a3595b9e2a68e6f.png

修改表名

官网

16d6969a3f01a637c024351dc8aa2781.png
59ba0f7846ae1257d4adadd8615ad159.png

我们修改一个表试一下

22f9591f58c1f9cb1b7790f49da201cf.png

给表添加一个列

d9068155b0e0718e6040fd6eb145b261.png
f09ff06564d41ca27ff21b224e04e43f.png

alter table table_name add columns (age int);

1104e4c02cf9a907904facdf27f2fd73.png

添加注释也在这个部分

02d9a1f392b30c68fe96521615e271c0.png

清除数据

Truncate table table_name

3418789a4ccedaa59e50176bbc2cd047.png

注意不会删除元数据

6f2e9e0f7198a8e865beccfb3bdb6ce1.png

Hive的日志文件配置文件

528ef171f6121840750c995e42aa87b0.png

目录修改为hive.log.dir=/opt/bigdata/hive/logs

8911f17e867c0bc95f1ce38544f2d9d4.png

我们可以在hive-site.xml.template找到下面两个属性,这两个属性可以帮助我们在日志中显示数据和列名,将属性添加到hive-site.xml中

hive.cli.print.current.db

false

Whether to include the current database in the Hive prompt.

hive.cli.print.header

false

Whether to print the names of the columns in query output.

47df1d465fe39707b4578d1aa7f5e520.png

我们添加到配置中,下次重启进入就可以看到日志了

951a288e38c7a1e30a9d5e554853a876.png

一些常用的命令

官网的位置

f734ea7eebf35a19e52970706d851ff8.png

就可以看到命令了

828985cf09bc6bf936a8113c2b3cc49a.png

比如:

quit exit 退出客户端

set 临时设置属性 可以参考Mysql中设置编码等方式去理解。另外set也可以用户查看参数的属性。

ecac83298ffe6621ab56c1d8db57711f.png

显示所有函数show functions;

de12cf65136ddd1852b8f354c54063ee.png

我们可以查询函数的使用比如max

Desc function max;

7a2b201537b4763a680c5641c78aff31.png

Desc function extended case;

f2616ed68d69d4e273936a8bd3c5efb0.png

Hive可以用java写成函数,使用add jar就可以添加使用

c913723cc68197bb26b0592afc04e716.png

也可以将python脚本添加进来,使用add file

7d939519987aad860110cc1bf29dcc81.png

!感叹号的方式可以查看Linux上的文件

8319498a92fb5acdf434b946e525fea6.png

dfs方式可以查看HDFS上的文件

941856faeaa3a7b485fcb7ec9e43f3fd.png



推荐阅读
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文整理了Java中org.apache.solr.common.SolrDocument.setField()方法的一些代码示例,展示了SolrDocum ... [详细]
  • hadoop1.2.1文档中这样写:Nowcheckthatyoucansshtothelocalhostwithoutapassphrase:$sshlocalhostIfyou ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
    11月13日,由腾讯云主办、游戏茶馆协办的2020年首场GAME-TECH腾讯云游戏行业技术沙龙在成都圆满落幕。本次沙龙邀请了腾讯云游戏行业解决方案总监宋永周、腾讯云游戏行业高级解决方案架构师曾梓恩、腾讯云游戏行业高级产品架构师郑晓曦、腾讯云游戏行业高级解决方案架构师温球良和天美L1(王者荣耀)服务器技术副总监杨光,为参会同行们带来了干货满满的技术建议。本文介绍了腾讯云游戏云的优势和为不同游戏研运场景提供的服务。腾讯云在中国游戏云服务市场领跑,成为众多游戏开发者的合作伙伴。 ... [详细]
author-avatar
骑马的仓鼠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有