Hive简易操作入门

合集下载

(3)hive的基本操作

(3)hive的基本操作

Hive的基本操作一般情况下hive所操作的数据文件是已经存在的(也可以是外部导入的),常见的web日志文件格式有多种(如josn格式)。

注意:Hive所创建的数据库和数据表都是在HDFS里的某个目录如果是数据库,那么在HDFS里就是:/user/hive/warehouse/库名称.db如果是数据表,那么在HDFS里就是:/user/hive/warehouse/库名称.db/表名称Hive下默认有一个库default,如果不建库,直接建表,则表建在defaule库下。

1.Hive的基本操作(1)建库命令:CREATE SCHEMA 库名;(2)建表命令:CREATE TABLE 表名(字段名称、类型);如:CREATE TABLE tuoguan_tbl (flied string);数据表里的内容,实质就是HDFS里的某个文件,需要把这个文件解析为数据表的格式。

(3)创建普通表,每行的字段用逗号分隔create table web_log(id int, name string, address string) row format delimited fields terminated by ',';(4)查看表的命令:show tables;(5)查看表中数据的命令:select *不需要转换为mapreduceselect * from tuoguan_tbl;(6)查看表结构命令:Desc 表名称;(7)举例:在Linux文件系统/home/oracle下有一个文件t_hive.txt(文本以tab分隔)#查看数据文件的内容(文本以tab分隔)~ vi t_hive.txt16 2 361 12 1341 2 3117 21 371 2 311 12 3411 2 34#创建新表hive> CREATE TABLE t_hive (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';OKTime taken: 0.489 seconds#导入数据t_hive.txt到t_hive表hive> LOAD DATA LOCAL INPATH '/home/cos/demo/t_hive.txt' OVERWRITE INTO TABLE t_hive ; Copying data from file:/home/cos/demo/t_hive.txtCopying file: file:/home/cos/demo/t_hive.txtLoading data to table default.t_hiveDeleted hdfs://:9000/user/hive/warehouse/t_hiveOKTime taken: 0.397 seconds#查看表hive> show tables;OKt_hiveTime taken: 0.099 seconds#查看表数据hive> select * from t_hive;OK16 2 361 12 1341 2 3117 21 371 2 311 12 3411 2 34Time taken: 0.264 seconds#查看表结构hive> desc t_hive;OKa intb intc intTime taken: 0.1 seconds#修改表,增加一个字段hive> ALTER TABLE t_hive ADD COLUMNS (new_col String);OKTime taken: 0.186 secondshive> desc t_hive;OKa intb intc intnew_col stringTime taken: 0.086 seconds#重命名表名~ ALTER TABLE t_hive RENAME TO t_hadoop;OKTime taken: 0.45 secondshive> show tables;OKt_hadoopTime taken: 0.07 seconds#删除表hive> DROP TABLE t_hadoop;OKTime taken: 0.767 seconds#查看表hive> show tables;OKTime taken: 0.064 seconds(8)如果不想把HDFS里的文件进行移动,则可以创建外部表:create external table web_log2 (id int, name string, address string) Location ‘/user/weblog/’; 2.将json格式的web日志文件user_movie.json导入到Hive的某个表中方法一:使用第三方jar包(1)使用一个第三方的jar包json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar(老师给的),将其复制到HIVE_HOME/lib目录下(2)创建表user_moviecreate table user_movie(custid string, sno string, genreid string, movieid string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' STORED AS TEXTFILE;(3)将json文件user_movie.json导入到表user_movie中首先将json文件上传到Linux文件系统/home/oracle目录下面,然后在Linux命令下执行如下命令:(本地的文件直接导入到HDFS相应的目录里)或者在hive命令中执行:(从HDFS里直接导入数据,这个会把HDFS里的文件移动到HIVE 表的相应目录里)方法二:使用hive自带的jar包hive-hcatalog-core-1.2.1.jar需要把HIVE_HOME/hcatalog/share/hcatalog/hive-hcatalog-core-1.2.1.jar复制到HIVE_HOME/lib,然后在hive命令下用下面方法建表。

hive的基本用法

hive的基本用法

hive的基本用法(原创版)目录一、Hive 简介二、Hive 基本用法1.查看数据库/表及其表结构2.创建表3.创建索引4.查询语句5.只输出几条正文Hive 是一个基于 Hadoop 的数据仓库工具,可以用来存储、查询和分析大规模的结构化数据。

它类似于传统的关系型数据库,可以通过 SQL 语句进行查询和操作,但 Hive 是构建在 Hadoop 之上的,因此可以充分利用 Hadoop 的分布式计算能力来处理大规模数据。

一、Hive 简介Hive 是由 Facebook 开发的一个数据仓库工具,它可以用来存储、查询和分析大规模的结构化数据。

Hive 本身是一个基于 Java 的程序,可以通过 MapReduce 进行并行计算,以快速处理海量数据。

二、Hive 基本用法1.查看数据库/表及其表结构要查看 Hive 中的数据库和表,可以使用以下命令:```show databases;show tables;```如果需要查看表的详细结构,可以使用以下命令:```desc formatted table_name;```2.创建表在 Hive 中创建表可以使用以下命令:```create table table_name (column1 data_type1,column2 data_type2,...);```其中,`data_type`可以是 int、float、string 等数据类型,`table_name`为你自定义的表名。

例如,创建一个名为`students`的表,包含`id`、`name`和`age`三个字段,其中`id`为整数类型,`name`为字符串类型,`age`为整数类型:```create table students (id int,name string,age int);```3.创建索引在 Hive 中,可以通过创建索引来提高查询效率。

创建索引的命令如下:```create index index_name on table_name (column_name);```其中,`index_name`为你自定义的索引名,`table_name`为表名,`column_name`为要创建索引的字段。

hive的用法

hive的用法

hive的用法一、Hive简介Hive是一个基于Hadoop的数据仓库工具,它能够将结构化数据映射到Hadoop的分布式文件系统上,并且提供了一个SQL-like的查询语言——HiveQL。

通过使用Hive,用户可以方便地处理大规模的数据,并且可以使用熟悉的SQL语言进行查询和分析。

二、Hive的安装1. 前置条件在安装Hive之前,需要先安装好Java和Hadoop。

另外还需要确保系统中已经安装好了MySQL或Derby等数据库管理系统。

2. 下载和解压缩从Apache官网上下载最新版本的Hive,然后解压缩到本地目录中。

3. 配置环境变量在.bashrc或者.bash_profile文件中添加以下内容:export HIVE_HOME=/usr/local/hiveexport PATH=$PATH:$HIVE_HOME/bin4. 修改配置文件进入$HIVE_HOME/conf目录,修改hive-env.sh文件,将其中的JAVA_HOME设置为本地JDK路径。

5. 启动Metastore服务在$HIVE_HOME/bin目录下执行以下命令启动Metastore服务:./hive --service metastore6. 启动CLI客户端在$HIVE_HOME/bin目录下执行以下命令启动CLI客户端:./hive三、创建表格1. 创建数据库在CLI客户端中执行以下命令创建数据库:create database mydb;2. 创建表格在CLI客户端中执行以下命令创建表格:create table mytable (id int, name string);四、导入数据1. 从本地文件系统导入数据在CLI客户端中执行以下命令将本地文件系统中的数据导入到Hive中:load data local inpath '/path/to/local/file' into table mytable;2. 从HDFS导入数据在CLI客户端中执行以下命令将HDFS中的数据导入到Hive中:load data inpath '/path/to/hdfs/file' into table mytable;五、查询数据在CLI客户端中执行以下命令查询数据:select * from mytable;六、常用操作1. 查看表格结构desc mytable;2. 查看数据库列表show databases;3. 查看表格列表show tables;4. 删除表格drop table mytable;5. 删除数据库drop database mydb;七、总结通过以上步骤,我们可以完成对Hive的安装和基本用法的学习。

Hive 基础操作

Hive 基础操作

Hive 基础(2):库、表、字段、交互式查询的基本操作•1、命令行操作•2、表操作•3、列操作•4、查看变量•5、一个完整的建库、表例子•6、常用语句示例•7、Refer:1、命令行操作(1)打印查询头,需要显示设置:set hive.cli.print.header=true;(2)加"--",其后的都被认为是注释,但CLI 不解析注释。

带有注释的文件只能通过这种方式执行:hive -f script_name(3)-e后跟带引号的hive指令或者查询,-S去掉多余的输出:hive -S -e "select * FROM mytable LIMIT 3" > /tmp/myquery (4)遍历所有分区的查询将产生一个巨大的MapReduce作业,如果你的数据集和目录非常多,因此建议你使用strict模型,也就是你存在分区时,必须指定where语句hive> set hive.mapred.mode=strict;(5)显示当前使用数据库set hive.cli.print.current.db=true;(6)设置Hive Job 优先级set mapred.job.priority=VERY_HIGH | HIGH | NORMAL | LOW | VERY_LOW(VERY_LOW=1,LOW=2500,NORMAL=5000,HIGH=7500,VERY _HIGH=10000)set mapred.job.map.capacity=M设置同时最多运行M个map 任务set mapred.job.reduce.capacity=N设置同时最多运行N个red uce任务(7)Hive 中的Mapper个数的是由以下几个参数确定的:mapred.min.split.size ,mapred.max.split.size ,dfs.block.siz esplitSize = Math.max(minSize, Math.min(maxSize, blockSiz e));map个数还与inputfilles的个数有关,如果有2个输入文件,即使总大小小于blocksize,也会产生2个mapmapred.reduce.tasks用来设置reduce个数。

Hive(二)hive的基本操作

Hive(二)hive的基本操作

Hive(⼆)hive的基本操作⼀、DDL操作(定义操作)1、创建表(1)建表语法结构CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name[(col_name data_type [COMMENT col_comment], ...)] //字段注释[COMMENT table_comment] //表的注释[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] //分区,前⾯没有出现的字段[CLUSTERED BY (col_name, col_name, ...) //分桶,前⾯出现的字段[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS][ROW FORMAT row_format][STORED AS file_format][LOCATION hdfs_path]分区:不⽤关注数据的具体类型,放⼊每⼀个分区⾥;分桶:调⽤哈希函数取模的⽅式进⾏分桶(2)建表语句相关解释create table:创建⼀个指定名字的表。

如果相同名字的表已经存在,则抛出异常;⽤户可以⽤ IF NOT EXISTS 选项来忽略这个异常。

external :关键字可以让⽤户创建⼀个外部表,在建表的同时指定⼀个指向实际数据的路径( LOCATION), Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。

在删除表的时候,内部表的元数据和数据会被⼀起删除,⽽外部表只删除元数据,不删除数据。

(经典⾯试问题)partitioned :在 Hive Select 查询中⼀般会扫描整个表内容,会消耗很多时间做没必要的⼯作。

有时候只需要扫描表中关⼼的⼀部分数据,因此建表时引⼊了 partition 概念。

hive基本的操作语句(实例简单易懂,createtableXXasselectXX)

hive基本的操作语句(实例简单易懂,createtableXXasselectXX)

hive基本的操作语句(实例简单易懂,createtableXXasselectXX)创建表:hive> CREATE TABLE pokes (foo INT, bar STRING);Creates a table called pokes with two columns, the first being an integer and the other a string创建⼀个新表,结构与其他⼀样hive> create table new_table like records;直接将select的结果存成表:create table XX as selectINSERT OVERWRITE TABLE ..SELECT:新表预先存在hive> FROM records2> INSERT OVERWRITE TABLE stations_by_year SELECT year, COUNT(DISTINCT station) GROUP BY year> INSERT OVERWRITE TABLE records_by_year SELECT year, COUNT(1) GROUP BY year> INSERT OVERWRITE TABLE good_records_by_year SELECT year, COUNT(1) WHERE temperature != 9999 AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9) GROUP BY year;CREATE TABLE ... AS SELECT:新表表预先不存在hive>CREATE TABLE target AS SELECT col1,col2 FROM source;创建视图:hive> CREATE VIEW valid_records AS SELECT * FROM records2 WHERE temperature !=9999;查看视图详细信息:hive> DESCRIBE EXTENDED valid_records;创建分区表:hive> create table logs(ts bigint,line string) partitioned by (dt String,country String);加载分区表数据:hive> load data local inpath '/home/hadoop/input/hive/partitions/file1' into table logs partition (dt='2001-01-01',country='GB');展⽰表中有多少分区:hive> show partitions logs;展⽰所有表:hive> SHOW TABLES;lists all the tableshive> SHOW TABLES '.*s';lists all the table that end with 's'. The pattern matching follows Java regularexpressions. Check out this link for documentation显⽰表的结构信息hive> DESCRIBE invites;shows the list of columns更新表的名称:hive> ALTER TABLE source RENAME TO target;添加新⼀列hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');删除表:hive> DROP TABLE records;删除表中数据,但要保持表的结构定义hive> dfs -rmr /user/hive/warehouse/records;从本地⽂件加载数据:hive> LOAD DATA LOCAL INPATH '/home/hadoop/input/ncdc/micro-tab/sample.txt' OVERWRITE INTO TABLE records;显⽰所有函数:hive> show functions;查看函数⽤法:hive> describe function substr;查看数组、map、结构hive> select col1[0],col2['b'],col3.c from complex;内连接:hive> SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);查看hive为某个查询使⽤多少个MapReduce作业hive> Explain SELECT sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);外连接:hive> SELECT sales.*, things.* FROM sales LEFT OUTER JOIN things ON (sales.id = things.id);hive> SELECT sales.*, things.* FROM sales RIGHT OUTER JOIN things ON (sales.id = things.id);hive> SELECT sales.*, things.* FROM sales FULL OUTER JOIN things ON (sales.id = things.id);in查询:Hive不⽀持,但可以使⽤LEFT SEMI JOINhive> SELECT * FROM things LEFT SEMI JOIN sales ON (sales.id = things.id);Map连接:Hive可以把较⼩的表放⼊每个Mapper的内存来执⾏连接操作hive> SELECT /*+ MAPJOIN(things) */ sales.*, things.* FROM sales JOIN things ON (sales.id = things.id);。

hive命令操作(一)

hive命令操作(一)

(转)Hive命令操作(一)1、准备文本文件,启动hadoop[root@hadoop0 ~]# cat /opt/test.txtJieJieMengMengNingNingJingJingFengJie[root@hadoop0 ~]# start-all.shWarning: $HADOOP_HOME is deprecated.starting namenode, logging to/opt/hadoop/libexec/../logs/hadoop-root-namenode-hadoo p0.outlocalhost: starting datanode, logging to/opt/hadoop/libexec/../logs/hadoop-root-datanode-hadoop 0.outlocalhost: starting secondarynamenode, logging to/opt/hadoop/libexec/../logs/hadoop-root-secondarynameno de-hadoop0.outstarting jobtracker, logging to/opt/hadoop/libexec/../logs/hadoop-root-jobtracker-hadoop 0.outlocalhost: starting tasktracker, logging to/opt/hadoop/libexec/../logs/hadoop-root-tasktracker-hadoo p0.out2、进入命令行[root@hadoop0 ~]# hiveWARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated.Please use org.apache.hadoop.log.metrics.EventCounterin all thelog4j.properties files.Logging initialized using configuration injar:file:/opt/hive/lib/hive-common-0.9.0.jar!/hive-log4j.prope rtiesHive historyfile=/tmp/root/hive_job_log_root_201509252001_16742684 19.txt3、查询昨天的表hive> select * from stu;OKJieJie 26 NULLMM 24 NULLTime taken: 17.05 seconds4、显示数据库hive> show databases;OKdefaultTime taken: 0.237 seconds5、创建数据库hive> create database test; OKTime taken: 0.259 secondshive> show databases;OKdefaulttest6、使用数据库Time taken: 0.119 secondshive> use test;OKTime taken: 0.03 seconds7、创建表textfile 默认格式,数据不做压缩,磁盘开销大,数据解析开销大。

非常详细地Hive操作指南–码农网

非常详细地Hive操作指南–码农网

非常详细地Hive操作指南–码农网1.概述本文主要介绍了Hive的基本操作和一些注意事项,非常详细。

2.基本操作2.1Create Table2.1.1介绍•CREATE TABLE 创建一个指定名字的表。

如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常。

•EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。

在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。

•LIKE 允许用户复制现有的表结构,但是不复制数据。

•用户在建表的时候可以自定义SerDe 或者使用自带的SerDe。

如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的SerDe。

在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的SerDe,Hive 通过SerDe 确定表的具体的列的数据。

•如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。

如果数据需要压缩,使用 STORED AS SEQUENCE 。

•有分区的表可以在创建的时候使用PARTITIONED BY 语句。

一个表可以拥有一个或者多个分区,每一个分区单独存在一个目录下。

而且,表和分区都可以对某个列进行 CLUSTERED BY 操作,将若干个列放入一个桶(bucket)中。

也可以利用SORT BY 对数据进行排序。

这样可以为特定应用提高性能。

•表名和列名不区分大小写,SerDe 和属性名区分大小写。

表和列的注释是字符串注:•SerDe是Serialize/Deserilize的简称,目的是用于序列化和反序列化•STORED AS TEXTFILE:默认格式,数据不做压缩,磁盘开销大,数据解析开销大。

hive的用法

hive的用法

Hive的用法一、Hive简介Hive是基于Hadoop的数据仓库工具,用于处理大规模数据集。

它提供了一种类似于SQL的查询语言,称为HiveQL,使得分析师和数据科学家可以使用熟悉的SQL 语法来查询和分析数据。

Hive将这些查询转换为MapReduce任务,并在Hadoop集群上执行,从而实现高效的数据处理。

二、Hive安装和配置2.1 安装Hive首先,需要下载Hive的安装包,并解压到指定的目录。

然后,设置Hive的环境变量,包括添加Hive的bin目录到PATH变量中,以及设置HIVE_HOME变量指向Hive的安装目录。

2.2 配置HiveHive的配置文件位于Hive的安装目录下的conf文件夹中。

其中,最重要的配置文件是hive-site.xml,它包含了Hive的各种配置参数。

在配置文件中,需要指定Hive的元数据存储位置、Hadoop集群的配置信息、Hive的执行引擎等。

三、Hive数据模型Hive的数据模型类似于传统的关系型数据库。

它将数据组织成表,并支持表的分区和分桶,以提高查询性能。

在Hive中,表可以分为内部表和外部表。

内部表的数据存储在Hive的默认存储位置中,而外部表的数据可以存储在Hive之外的任意位置。

四、HiveQL查询语言HiveQL是Hive的查询语言,它类似于SQL语言,但也有一些不同之处。

下面是一些常用的HiveQL查询语句和语法:4.1 创建表在Hive中,可以使用CREATE TABLE语句来创建表。

可以指定表的名称、列名、列的数据类型等信息。

例如:CREATE TABLE employees (id INT,name STRING,age INT);4.2 加载数据使用LOAD DATA语句可以将数据加载到Hive表中。

可以从本地文件系统或Hadoop 文件系统中加载数据。

例如:LOAD DATA LOCAL INPATH '/path/to/data.txt' INTO TABLE employees;4.3 查询数据使用SELECT语句可以查询Hive表中的数据。

hive教程

hive教程

hive教程Hive是一个基于Hadoop的数据仓库基础设施工具,用于处理大规模数据集并进行数据存储和查询。

它提供了类似于SQL 的查询语言,使得用户可以通过简单的语句来运行复杂的MapReduce作业。

本教程将介绍Hive的一些基本概念和使用方法。

首先,需要了解Hive中的表这个概念。

表是Hive中用于存储数据的一种结构,类似于关系型数据库中的表。

在Hive中,表可以通过HiveQL语言来创建和操作。

下面是一个创建表的示例:```CREATE TABLE my_table (id INT,name STRING,age INT)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'STORED AS TEXTFILE;```上述语句创建了一个名为`my_table`的表,该表包含了id、name和age这三个字段。

表中的数据以制表符分隔,并且以文本文件的形式存储。

接下来,可以使用HiveQL语言来查询和操作表中的数据。

下面是一个查询表中数据的示例:```SELECT * FROM my_table WHERE age > 18;```上述语句会返回表`my_table`中年龄大于18的所有记录。

除了查询数据,Hive还支持在数据上执行其他操作,例如插入、更新和删除。

下面是一个插入数据的示例:```INSERT INTO my_table VALUES (1, 'John', 25);```上述语句会向表`my_table`中插入一条记录,该记录的id为1,name为John,age为25。

除了基本的表操作,Hive还提供了一些高级功能,例如分区和桶。

分区允许将表中的数据分割成多个部分,以便更高效地查询;桶则允许将表中的数据分成多个文件,以便更高效地存储和查询。

总结起来,Hive是一个用于处理大规模数据集的工具,它提供了类似于SQL的查询语言和一些高级功能。

hive的基本使用流程

hive的基本使用流程

Hive的基本使用流程1. 简介Hive是一个基于Hadoop的大数据处理工具,它能够将结构化数据映射到Hadoop的分布式文件系统上,并支持使用类似于SQL的HiveQL语言进行查询和分析。

2. 安装和配置在开始使用Hive之前,首先需要安装和配置Hive环境。

以下是Hive的安装和配置步骤:1.下载Hive软件包并解压缩到指定目录。

2.在Hadoop的配置文件中添加Hive的相关配置项。

3.配置Hive的环境变量。

4.初始化Hive的数据库和元数据。

3. 创建数据库在使用Hive之前,需要首先创建一个数据库来存储数据表。

以下是创建数据库的步骤:1.打开Hive终端。

2.使用CREATE DATABASE语句创建一个新的数据库。

3.可选:使用USE DATABASE语句切换到新创建的数据库。

4. 创建数据表在Hive中,表是数据的逻辑表示方式,可以通过HiveQL语句创建数据表。

以下是创建数据表的步骤:1.使用CREATE TABLE语句创建一个新的数据表。

2.指定数据表的字段名、数据类型和约束条件。

3.可选:使用PARTITIONED BY子句定义表的分区方式。

5. 加载数据创建数据表之后,可以通过LOAD DATA语句将数据加载到表中。

以下是加载数据的步骤:1.准备包含数据的文件或目录。

2.使用LOAD DATA语句将数据加载到指定的数据表中。

3.根据需要,可以使用不同的加载选项,如指定分隔符、指定列的映射关系等。

6. 查询数据在Hive中,可以使用HiveQL语言进行数据查询。

以下是查询数据的步骤:1.使用SELECT语句指定要查询的字段。

2.使用FROM关键字指定要查询的数据表。

3.可选:使用WHERE子句指定查询条件。

4.可选:使用GROUP BY子句进行分组。

5.可选:使用ORDER BY子句进行排序。

7. 数据转换和处理除了基本的数据查询外,Hive还支持一些数据转换和处理操作。

hive 的用法

hive 的用法

hive 的用法
Hive是一个基于Hadoop的数据仓库工具,它可以用来进行数据查询和分析。

以下是Hive的基本用法:
1. 显示数据库和表:使用“show databases”或“show tables”命令可
以显示当前数据库中的所有数据库和表。

2. 选择数据库:使用“use database”命令可以切换到指定的数据库。

3. 查看表结构:使用“desc table”命令可以查看表的结构信息,包括列名、数据类型、注释等。

4. 执行查询:使用“select”命令可以执行各种查询操作,例如选择所有数据、选择特定列、过滤数据、连接表等。

5. 过滤数据:使用“where”子句可以对数据进行过滤,只选择满足条件的记录。

6. 分组和聚合:使用“group by”可以对数据进行分组,并结合聚合函数(如count、sum、avg等)对每个组进行聚合计算。

7. 排序数据:使用“order by”可以对数据进行排序,按照指定的列进行升序或降序排列。

8. 连接表:使用“join”可以将多个表根据指定的条件连接起来,进行联合查询。

9. 创建表:使用“create table”命令可以创建新表,并指定表结构和属性。

10. 删除表:使用“drop table”命令可以删除表以及其相关的数据和结构。

以上是Hive的一些基本用法,通过这些操作可以对存储在Hadoop分布式文件系统中的大规模数据进行高效查询和分析。

Hive简易操作入门

Hive简易操作入门

1Hive使用入门:主要流程为:1.运行putty等ssh客户端连接hive服务器;2.运行hive命令进入hive shell环境;3.执行HQL语句进行查询;本流程中以putty为例,如果使用别的SSH客户端,界面上会不同,基本过程相似。

我们当前使用的hive版本为0.9.0。

由于hive本身还在不断开发、升级中,不同版本的hive对各种语句、命令行参数等的支持均不同,请大家注意某个特性从哪一个版本开始支持。

Hive官方网站上的教材中有些命令需要到0.10.0等更高版本才支持!1.1安装ssh 客户端Putty软件位置:\\cn1\ctrip\商业智能部\部门公用\SoftWare\putty.zip解压所可以得到文件Putty ssh客户端1.2登录安装hive的机器1.2.1运行putty输入ip地址192.168.83.96 和端口号信息1022,如下图:注:一般默认的SSH端口是22,此处必须修改!1.2.2登录linux单击open按钮,按提示输入用户名,并回车,然后按提示输入密码,并回车,例如:用户名为ppj 密码为HgeeGxR5提示:可选中复制到剪贴板后,用鼠标右键粘贴如果用户名、密码正确,则登录成功,顺利进入linux 的bash 环境。

注:此环境类似于运行windows的cmd进入的dos环境。

1.2.3输入hive,进入hive 的shell 环境:1.2.4查询执行如下查询语句:Use test_wqd;Select * from pageview limit 5;屏幕输出即为查询语句的结果。

注意:hive的查询语句以分号作为各条命令的分隔符,结尾的分号不能省略。

这一点和SQL Server的T-SQL差异比较大!2Hive简介:Hive shell环境和mysql的客户端比较相似,而且hive的某些语法与mysql比较相似,例如:show databases, show tables, desc 等。

hive的使用流程

hive的使用流程

Hive的使用流程概述Apache Hive是建立在Hadoop之上的数据仓库基础设施,它提供了一种可以通过HiveQL(类似于SQL的查询语言)来处理大规模数据的方式。

本文将通过以下几个步骤详细介绍Hive的使用流程。

步骤一:准备环境1.安装Hadoop集群:首先需要搭建一个Hadoop集群环境,确保你已经安装了Hadoop,并且集群正常运行。

2.安装Hive:Hive的安装可以参考官方文档或者其他教程指南,在安装过程中需要配置Hive的元数据存储位置以及相关依赖。

步骤二:创建数据库1.启动Hive:在命令行中输入hive命令来启动Hive。

2.创建数据库:在Hive命令行界面中,使用CREATE DATABASE语句创建一个新的数据库。

例如:CREATE DATABASE mydb;步骤三:创建表格1.切换到所创建的数据库:在Hive命令行界面中,使用USE语句切换到所创建的数据库。

例如:USE mydb;2.创建表格:使用CREATE TABLE语句创建一个新的表格,指定表格的列名和数据类型。

例如:CREATE TABLE employees (id INT, name STRING, age INT, salary FLOAT);3.列出表格:使用DESCRIBE语句列出表格的结构。

例如:DESCRIBE employees;步骤四:加载数据1.准备数据文件:将需要导入的数据文件准备好,确保数据文件的格式与表格的列名和数据类型匹配。

2.将数据文件加载到表格中:使用LOAD DATA INPATH语句将数据文件加载到表格中。

例如:LOAD DATA INPATH '/path/to/data_file' INTO TABLE employees;步骤五:查询数据1.查询表格数据:使用SELECT语句查询表格中的数据。

例如:SELECT * FROM employees;2.条件查询:使用WHERE语句对表格数据进行条件查询。

hive基本操作命令

hive基本操作命令

hive基本操作命令Hive是基于Hadoop的数据仓库工具,它可以对成百上千的TB数据进行处理和管理。

通过Hive,用户可以采用类SQL的方式查询和处理数据。

在使用Hive前,需要掌握一些基本的Hive操作命令。

一、启动Hive启动Hive需要在终端输入hive命令。

如果提示缺少相应的环境变量,可以在终端中输入以下命令添加Hive相关的环境变量:export HIVE_HOME=/usr/local/hiveexport PATH=$PATH:$HIVE_HOME/bin此时,再次输入hive命令即可启动。

二、创建表在Hive中创建表的方式与MySQL等数据库操作类似,需要指定表的名称、列名和数据类型等信息。

创建表的命令如下:create table tablename (column1 datatype1,column2 datatype2,.....columnN datatypeN);例如,创建一个student表,其中包含name、age、gender和score四个字段,分别为字符串类型、整数类型、字符串类型和浮点型,命令如下:create table student (name string,age int,gender string,score float);三、加载数据在创建好表后,需要将数据加载到表中进行处理。

在Hive中,可以通过load命令实现。

例如,将student.csv中的数据加载到student表中,命令如下:load data local inpath '/path/to/student.csv' into table student;四、查询数据在Hive中查询数据的方式与MySQL类似,通过select命令实现。

例如,查询student表中的所有数据,命令如下:select * from student;可以根据需求查询特定的数据,例如,查询score大于90的学生名单,命令如下:select name from student where score > 90;五、更新数据在Hive中更新数据的方式与MySQL类似,通过update命令实现。

hive数据库的基本操作

hive数据库的基本操作

hive数据库的基本操作Hive数据库的基本操作Hive是一种基于Hadoop的数据仓库基础架构,它提供了类似于SQL的查询功能,使得能够使用类似于SQL的语法来查询和分析大规模的分布式数据集。

本文将介绍Hive数据库的基本操作,包括创建数据库、创建表、插入数据、查询数据、修改数据和删除数据等。

一、创建数据库在Hive中,可以使用CREATE DATABASE语句来创建数据库。

语法如下:CREATE DATABASE database_name;其中,database_name为要创建的数据库名称。

创建数据库的时候可以指定一些其他属性,比如数据库的路径、描述等。

二、创建表在Hive中,可以使用CREATE TABLE语句来创建表。

语法如下:CREATE TABLE table_name (column1 data_type,column2 data_type,...);其中,table_name为要创建的表名称,column1、column2等为表的列名,data_type为列的数据类型。

三、插入数据在Hive中,可以使用INSERT INTO语句来插入数据。

语法如下:INSERT INTO table_name VALUES (value1, value2, ...);其中,table_name为要插入数据的表名称,value1、value2等为要插入的数据值。

四、查询数据在Hive中,可以使用SELECT语句来查询数据。

语法如下:SELECT column1, column2, ...FROM table_nameWHERE condition;其中,column1、column2等为要查询的列名,table_name为要查询的表名称,condition为查询的条件。

五、修改数据在Hive中,可以使用UPDATE语句来修改数据。

语法如下:UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;其中,table_name为要修改数据的表名称,column1、column2等为要修改的列名,value1、value2等为要修改的值,condition 为修改的条件。

HIVE的启动及基本命令

HIVE的启动及基本命令

HIVE的启动及基本命令Hive基本操作(1)启动hive[atguigu@hadoop102 hive]$ bin/hive(2)查看数据库hive> show databases;(3)打开默认数据库hive> use default;(4)显⽰default数据库中的表hive> show tables;(5)创建⼀张表hive> create table student(id int, name string);(6)显⽰数据库中有⼏张表hive> show tables;(7)查看表的结构hive> desc student;(8)向表中插⼊数据hive> insert into student values(1000,"ss");(9)查询表中数据hive> select * from student;(10)退出hivehive> quit;Hive实际操作(1)启动hive[atguigu@hadoop102 hive]$ bin/hive(2)显⽰数据库hive> show databases;(3)使⽤default数据库hive> use default;(4)显⽰default数据库中的表hive> show tables;(5)删除已创建的student表hive> drop table student;(6)创建student表, 并声明⽂件分隔符’\t’hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATEDBY '\t';(7)加载/opt/module/datas/student.txt ⽂件到student数据库表中。

hive> load data local inpath '/opt/module/datas/student.txt' into table student;(8)Hive查询结果hive> select * from student;OK1001 zhangshan1002 lishi1003 zhaoliuTime taken: 0.266 seconds, Fetched: 3 row(s)。

hive基本操作命令

hive基本操作命令

hive基本操作命令
1.创建hive表:使用CREATETABLE命令创建表,指定表名、列名和数据类型。

2. 加载数据:使用LOAD DATA命令将数据加载到hive表中。

3. 查询数据:使用SELECT语句查询hive表中的数据。

4. 插入数据:使用INSERT INTO语句将数据插入到hive表中。

5. 更新数据:使用UPDATE语句更新hive表中的数据。

6. 删除数据:使用DELETE语句删除hive表中的数据。

7. 分区表:使用PARTITION BY子句将表分区,以提高查询效率。

8. 排序:使用ORDER BY子句对查询结果进行排序。

9. 分组:使用GROUP BY子句对查询结果进行分组。

10. 聚合:使用SUM、AVG等聚合函数对查询结果进行聚合。

11. 连接:使用JOIN语句连接多个表,实现查询结果的合并。

12. 联合:使用UNION语句将多个查询结果合并。

13. 子查询:使用子查询实现嵌套查询或多层查询。

14. 视图:使用CREATE VIEW语句创建视图,将查询结果保存为虚拟表。

15. 用户管理:使用CREATE USER、DROP USER、GRANT等命令对用户进行管理。

- 1 -。

hive 的用法

hive 的用法

hive 的用法(原创实用版)目录1.Hive 简介2.Hive 的基本用法3.Hive 的高级用法4.Hive 的应用场景5.总结正文1.Hive 简介Hive 是基于 Hadoop 的数据仓库工具,可以用来处理和分析大规模的结构化数据。

它允许用户使用类似于 SQL 的查询语言(称为 HiveQL 或QL)来查询、汇总和分析存储在 Hadoop 分布式文件系统 (HDFS) 上的数据。

Hive 的本质是一个数据仓库,可以将数据抽象成表,并支持像 SQL 一样的查询方式,从而简化了数据处理的流程。

2.Hive 的基本用法(1)连接 Hive要使用 Hive,首先需要在本地机器上安装 Hive,并配置好环境变量。

然后,通过命令行或终端连接到 Hadoop 集群上的 Hive。

(2)创建表在 Hive 中,表是数据的基本组织单位。

可以使用 CREATE TABLE 语句来创建表。

创建表时,需要指定表名、列名和数据类型等信息。

(3)插入数据可以使用 INSERT INTO 语句将数据插入到表中。

同时,也可以使用LOAD DATA INPATH 语句将本地文件的数据加载到表中。

(4)查询数据查询 Hive 表中的数据,可以使用 SELECT 语句。

SELECT 语句支持各种查询条件,如 WHERE、GROUP BY、ORDER BY 等。

3.Hive 的高级用法(1)分区为了提高查询效率,可以将表按照某个或多个列进行分区。

分区表在查询时,可以按照分区键进行数据切割,从而减少数据处理的量。

(2)索引为了加速查询速度,可以为表创建索引。

创建索引可以使用 CREATE INDEX 语句,同样需要指定索引名和基于哪些列创建索引。

(3)视图视图是基于表的虚拟表,可以通过 SELECT 语句查询得到。

视图本身并不包含数据,只是在查询时动态从表中获取数据。

创建视图可以使用CREATE VIEW 语句。

4.Hive 的应用场景Hive 广泛应用于大数据处理领域,主要场景包括数据仓库建设、数据分析、报表生成等。

(转)Hive基本命令操作(二)

(转)Hive基本命令操作(二)

(转)Hive基本命令操作(二)hive操作一、创建元数据保存在Mysql中1)修改配置文件<!--add by gaojingsong --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://192.168.1.100:3306/hive?createDat abaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>root</value><description>password to use against metastore database</description></property><property><name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>Username to use against metastore database</description></property><property><name>javax.jdo.mapping.Schema</name><value>HIVE</value></property>2)执行初始化语句[root@hadoop0 bin]# schematool -dbType mysql -initSchema -userName root -passWord root -verbose beeline>Initialization script completedschemaTool completed二、启动hive[root@hadoop0 bin]# hiveSLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/opt/bigdata/hive2.0/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/opt/bigdata/hadoop272/share/hadoop/common/lib/slf 4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See for an explanation.SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]Logging initialized using configuration in file:/opt/bigdata/hive2.0/conf/hive-log4j2.properties Exception in thread "main"ng.RuntimeException: .ConnectException: Call From hadoop0/192.168.1.111to hadoop0:9000 failed on connection exception: .ConnectException: Connection refused; For more details see:解决方案:启动Hadoop[root@hadoop0 bin]# cd ../../hadoop272/sbin/[root@hadoop0 sbin]# ./start-all.shThis script is Deprecated. Instead use start-dfs.sh and start-yarn.sh99/06/15 09:10:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicableStarting namenodes on [hadoop0]hadoop0: starting namenode, logging to /opt/bigdata/hadoop272/logs/hadoop-root-namenode-hadoop0.outlocalhost: starting datanode, logging to /opt/bigdata/hadoop272/logs/hadoop-root-datanode-hadoop0.outStarting secondary namenodes [0.0.0.0]0.0.0.0: starting secondarynamenode, logging to /opt/bigdata/hadoop272/logs/hadoop-root-secondarynamenode-hadoop0.out99/06/15 09:10:30 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicablestarting yarn daemonsstarting resourcemanager, logging to /opt/bigdata/hadoop272/logs/yarn-root-resourcemanager-hadoop0.outlocalhost: starting nodemanager, logging to /opt/bigdata/hadoop272/logs/yarn-root-nodemanager-hadoop0.out验证JPS进程[root@hadoop0 sbin]# jps4946 NodeManager4689 SecondaryNameNode4847 ResourceManager4510 DataNode4411 NameNode5159 Jps[root@hadoop0 sbin]# cd ../../hive2.0/bin/[root@hadoop0 bin]# ./hiveSLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/opt/bigdata/hive2.0/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/opt/bigdata/hadoop272/share/hadoop/common/lib/slf 4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See for an explanation.SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]Logging initialized using configuration in file:/opt/bigdata/hive2.0/conf/hive-log4j2.properties Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. tez, spark) or using Hive 1.X releases.hive>三、执行建表语句的两种方法1)在hive之外:hive -f xx.sql2) 在hive之内:source xxx.sql[root@hadoop0 ~]# cat /tmp/s.sqlCREATE TABLE student (id int, name string);[root@hadoop0 ~]# cat /tmp/teacher.sqlCREATE TABLE teacher (id int, name string);Time taken: 0.136 secondshive> show tables;OKTime taken: 0.21 secondshive> source /tmp/s.sql ;OKTime taken: 4.527 secondshive> show tables;OKstudentTime taken: 0.162 seconds, Fetched: 1 row(s)hive>[root@hadoop0 ~]# hive -f /tmp/teacher.sqlSLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/opt/bigdata/hive2.0/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:/opt/bigdata/hadoop272/share/hadoop/common/lib/slf 4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See for an explanation.SLF4J: Actual binding is of type[org.apache.logging.slf4j.Log4jLoggerFactory]Logging initialized using configuration in file:/opt/bigdata/hive2.0/conf/hive-log4j2.properties OKTime taken: 7.664 seconds[root@hadoop0 ~]#hive> show tables;OKstudentteacherTime taken: 0.896 seconds, Fetched: 2 row(s)显示hive默认值hive> set;system:mand=org.apache.hadoop.util.RunJar /opt/bigdata/hive2.0/lib/hive-cli-2.0.1.jarorg.apache.hadoop.hive.cli.CliDriversystem:uncher=SUN_STANDARDsystem:sun.jnu.encoding=UTF-8system:piler=HotSpot Client Compiler system:sun.os.patch.level=unknownsystem:user.country=USsystem:user.dir=/opt/bigdata/hive2.0/binsystem:user.home=/rootsystem:nguage=ensystem:=rootsystem:user.timezone=PRC// 打印列名hive> set hive.cli.print.header=true;创建分区表hive> CREATE TABLE tt(SecurityID STRING,tradeTime STRING,PreClosePx DOUBLE) PARTITIONED BY (tradeDate INT)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';显示表结构hive> DESCRIBE student;OKid intname stringTime taken: 1.036 seconds, Fetched: 2 row(s)展示表中有多少分区:hive> show partitions student;FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLT ask. Table student is not a partitioned table展示表中有多少分区:(没有修改表分区,所以没有显示分区信息) hive> show partitions tt;OKTime taken: 0.449 seconds展示建表语句hive> show create table student;OKCREATE TABLE `student`(`id` int,`name` string)ROW FORMAT SERDE'zySimpleSerDe'STORED AS INPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutput Format'LOCATION'hdfs://hadoop0:9000/user/hive/warehouse/student'TBLPROPERTIES ('transient_lastDdlTime'='929409669')Time taken: 0.697 seconds, Fetched: 13 row(s)展示建表语句hive> show create table tt;OKCREATE TABLE `tt`(`securityid` string,`tradetime` string,`preclosepx` double)PARTITIONED BY (`tradedate` int)ROW FORMAT SERDE'zySimpleSerDe' WITH SERDEPROPERTIES ('field.delim'=',','serialization.format'=',')STORED AS INPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutput Format'LOCATION'hdfs://hadoop0:9000/user/hive/warehouse/tt'TBLPROPERTIES ('transient_lastDdlTime'='929410058')Time taken: 0.094 seconds, Fetched: 19 row(s)hive> alter table tt add partition(tradedate=20160720) location '/tmp';OKTime taken: 0.256 secondshive> show partitions tt;OKtradedate=20160720Time taken: 0.337 seconds, Fetched: 1 row(s)hive> alter table tt add partition(tradedate=20160721) location '/tmp';OKTime taken: 0.256 secondshive> alter table tt add partition(tradedate=20160722) location '/tmp';OKTime taken: 0.259 secondshive> alter table tt add partition(tradedate=90160722) location '/tmp';OKTime taken: 0.235 secondshive> show partitions tt;OKtradedate=20160720tradedate=20160721tradedate=20160722tradedate=90160722hive> alter table tt drop partition(tradedate=90160722)。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1Hive使用入门:
主要流程为:
1.运行putty等ssh客户端连接hive服务器;
2.运行hive命令进入hive shell环境;
3.执行HQL语句进行查询;
本流程中以putty为例,如果使用别的SSH客户端,界面上会不同,基本过程相似。

我们当前使用的hive版本为0.9.0。

由于hive本身还在不断开发、升级中,不同版本的hive对各种语句、命令行参数等的支持均不同,请大家注意某个特性从哪一个版本开始支持。

Hive官方网站上的教材中有些命令需要到0.10.0等更高版本才支持!
1.1安装ssh 客户端Putty
软件位置:
\\cn1\ctrip\商业智能部\部门公用\SoftWare\putty.zip
解压所可以得到文件
Putty ssh客户端
1.2登录安装hive的机器
1.2.1运行putty
输入ip地址192.168.83.96 和端口号信息1022,如下图:注:一般默认的SSH端口是22,此处必须修改!
1.2.2登录linux
单击open按钮,按提示输入用户名,并回车,然后按提示输入密码,并回车,例如:
用户名为ppj 密码为HgeeGxR5
提示:可选中复制到剪贴板后,用鼠标右键粘贴
如果用户名、密码正确,则登录成功,顺利进入linux 的bash 环境。

注:此环境类似于运行windows的cmd进入的dos环境。

1.2.3输入hive,进入hive 的shell 环境:
1.2.4查询
执行如下查询语句:
Use test_wqd;
Select * from pageview limit 5;
屏幕输出即为查询语句的结果。

注意:hive的查询语句以分号作为各条命令的分隔符,结尾的分号不能省略。

这一点和SQL Server的T-SQL差异比较大!
2Hive简介:
Hive shell环境和mysql的客户端比较相似,而且hive的某些语法与mysql比较相似,例如:show databases, show tables, desc 等。

Hive支持两种模式:交互模式和批模式。

2.1Hive命令行参数
-e <quoted-query-string> 执行所指定查询字符串,并退出,与mysql的-e类似。

-f <filename> 执行指定的文件中内容并退出。

-H,--help 显示帮助
-S,--silent 安静模式,不输出hive提示符等2.2Hive交互模式
下面简单介绍一下hive交互模式下可以运行的常用命令:
quit 退出hive交互式shell
exit 与quit相同
source 读入hQL文件并执行查询,与mysql的source命令相似。

Set 打印所有配置变量信息
Set<key>=<value> 设置特定配置变量key的值为value。

注:如果拼写错误,将不会报错。

Set –v 打印hadoop和hive相关配置变量信息
! 执行外部的shell命令,例如:
!date; 显示当前系统时间
2.3批处理模式
-e或者-f参数
例1:
hive -e "use ubt; select * from s_ubt_pageview where d='2013-04-01' limit 100;"
例2:
假设query.sql文件的内容:
use ubt;
select * from s_ubt_pageview where d=’2013-04-01’;

hive –f query.sql
2.4配置文件
此部分为高级功能。

在账户的home目录下有个.hiverc文件,可以配置hive的一些参数,例如:set hive.cli.print.current.db=true; #在命令行中显示当前数据库名
set press.intermediate=true; #压缩hive的中间结果
set pression.codec=press.BZip2Codec; #对map输出端内容使用BZip2 编码/解码器
set press.output=true; #压缩hive输出
set pression.codec=press.BZip2Codec; #对hive中的MR输出内容使用BZip2 编码/解码器
set mapred.reduce.tasks=7; #设置mapreduce中reduce数目为7
2.5将查询结果导出为文件
2.5.1方法1:INSERT
采用INSERT OVERWRITE LOCAL DIRECTORY 方法。

例如:
在hive shell中执行查询语句:
use ubt;
INSERT OVERWRITE LOCAL DIRECTORY '/home/ppj/pageview'
select * from s_ubt_pageview where d='2013-04-01' limit 100;
则会在/home/ppj目录下自动创建pageview子目录,浏览目录,发现有如下文件:ls -al pageview/
其中:
主要的内容在000000_0中。

而.00000_0.crc为linux下的隐藏文件,只保存对应文件000000_0的CRC校验和,可忽略之。

000000_0文件的格式为【与hive建表语句中指定的行、列、复杂类型的分隔符有关】。

默认如下:
\n 文本文件中记录与记录之间的分隔符
For text files, each line is a record, so the line feed character separates records.
^A Ctrl+A,也就是\001,列和列之间的分隔符
Separates all fields (columns). Written using the octal code \001 when explicitly specified in CREATE TABLE statements.
^B Separate the elements in an ARRAY or STRUCT, or the key-value pairs in a MAP. Written using the octal code \002 when explicitly specified in CREATE TABLE statements.
^C Separate the key from the corresponding value in MAP key-value pairs. Written using the octal code \003 when explicitly specified in CREATE TABLE statements.
2.5.2方法2:查询结果重定向
Linux支持标准输出和标准错误的重定向,可以把原先输出到标准输出流的内容重定向到文件。

默认情况下,hive的查询结果输出内容以\t作为分隔符。

以上述query.sql为例:
hive -f query.sql > query.tsv
查看query.tsv的内容,发现头部为:
注意:头部多了一行,即标题行。

如果某列中本身有\t,需要在查询语句中特殊处理。

3使用SFTP工具下载文件
如果文件比较大,则建议在linux下用gzip命令先进行压缩,再下载,输入如下命令即可压缩:
gzip 000000_0
则压缩后的文件为
000000_0.gz
推荐使用winscp通过sftp协议下载文件。

3.1安装WinSCP
软件安装包的目录在
\\cn1\ctrip\商业智能部\部门公用\SoftWare\winscp514setup.zip 解压缩出来就是WinSCP的安装程序
3.2下载文件
3.2.1新建连接
单击“新建”按钮,进入新建对话框:
3.2.2登录
输入
ip地址192.168.83.96
端口号信息1022
用户名、密码:
如果配置正确,则可以进入类似于window explorer的图形界面。

3.2.3下载文件
在左边窗口可以设置本地的当前目录,而右边窗口则可以设置主机的当前目录。

采用类似拖拽操作,即可以从SSH服务器下载至本地。

相关文档
最新文档