(一)简单入门

1、创建一个表

create table if not exists ljh_emp(

name string,

salary float,

gender string)

comment 'basic information of a employee'

row format delimited fields terminated by ',’;



2、准备数据文件

创建test目录且目录只有一个文件,文件内容如下:

ljh,25000,male

jediael,25000,male

llq,15000,female



3、将数据导入表中

load data local inpath '/home/ljhn1829/test' into table ljh_emp;



4、查询表中的内容

select * from ljh_emp;

OK

ljh    25000.0    male

jediael    25000.0    male

llq    15000.0    female

Time taken: 0.159 seconds, Fetched: 3 row(s)



(二)关于分隔符

1、默认分隔符

hive中的行默认分隔符为 \n,字段分隔符为 ctrl+A,此外还有ctrl+B,ctrl+C,可以用于分隔array,struct,map等,详见《hive编程指南》P44。

因此,若在建表是不指定row format delimited fields terminated by ‘,’,则认为默认字段分隔符为ctrl+A。

可以有2种解决方案:

一是在创建表时指定分隔符,如上例所示,

二是在数据文件中使用ctrl+A,见下例



2、在数据文件中使用ctrl+A全分隔符

(1)创建表

create table ljh_test_emp(name string, salary float, gender string);

(2)准备数据文件

创建test2目录,目录下只有一个文件,文件内容如下:

ljh^A25000^Amale

jediael^A25000^Amale

llq^A15000^Afemale

其中的^A字符仅在vi时才能看到,cat不能看到。

输出^A的方法是:在vi的插入模式下,先按ctrl+V,再按ctrl+A

(3)将数据导入表

create table ljh_test_emp(name string, salary float, gender string);

(4)查询数据

hive> select * from ljh_test_emp;

OK

ljh    25000.0    male

jediael    25000.0    male

llq    15000.0    female

Time taken: 0.2 seconds, Fetched: 3 row(s)



3、未指定分隔符,且又未使用ctrl+A作文件中的分隔符,出现以下错误

(1)创建表

create table if not exists ljh_emp_test(

name string,

salary float,

gender string)

comment 'basic information of a employee’;

(2)准备数据

ljh,25000,male

jediael,25000,male

llq,15000,female

(3)将数据导入表中

load data local inpath '/home/ljhn1829/test' into table ljh_emp_test;

(4)查看表中数据

select * from ljh_emp_test;

OK

ljh,25000,male    NULL    NULL

jediael,25000,male    NULL    NULL

llq,15000,female    NULL    NULL

Time taken: 0.185 seconds, Fetched: 3 row(s)

可以看出,由于分隔符为ctrl+A,因此导入数据时将文件中的每一行内容均只当作第一个字段,导致后面2个字段均为null。



(三)复杂一点的表

1、创建表

create table employees (

    name string,

    slalary float,

    suboddinates array<string>,

    deductions map<string,float>,

    address struct<stree:string, city:string, state:string, zip:int>

)

partitioned by(country string, state string);



2、准备数据

John Doe^A100001.1^AMary Smith^BTodd Jones^AFederal Taxes^C.2^BStateTaxes^C.05^BInsurance^C.1^A1 Michigan Ave.^BChicago^BIL^B60600

Mary Smith^A80000.0^ABill King^AFederal Taxes^C.2^BState Taxes^C.05^BInsurance^C.1^A100 Ontario St.^BChicago^BIL^B60601

Todd Jones^A70000.0^A^AFederal Taxes^C.15^BState Taxes^C.03^BInsurance^C.1^A200 Chicago Ave.^BOak Park^BIL^B60700

Bill King^A60001.0^A^AFederal Taxes^C.15^BState Taxes^C.03^BInsurance^C.1^A300 Obscure Dr.^BObscuria^BIL^B60100

注意  ^A:分隔字段 ^B:分隔array/struct/map中的元素 ^C:分隔map中的KV

详见《hive编程指南》P44。



3、将数据导入表中

load data local inpath '/home/ljhn1829/phd' into table employees partition(country='us',state='ca');



4、查看表数据

hive> select * from employees;

OK

John Doe    100001.1    ["Mary Smith","Todd Jones"]    {"Federal Taxes":0.2,"StateTaxes":0.05,"Insurance":0.1}    {"stree":"1 Michigan Ave.","city":"Chicago","state":"IL","zip":60600}    us    ca

Mary Smith    80000.0    ["Bill King"]    {"Federal Taxes":0.2,"State Taxes":0.05,"Insurance":0.1}    {"stree":"100 Ontario St.","city":"Chicago","state":"IL","zip":60601}    us    ca

Todd Jones    70000.0    []    {"Federal Taxes":0.15,"State Taxes":0.03,"Insurance":0.1}    {"stree":"200 Chicago Ave.","city":"Oak Park","state":"IL","zip":60700}    us    ca

Bill King    60001.0    []    {"Federal Taxes":0.15,"State Taxes":0.03,"Insurance":0.1}    {"stree":"300 Obscure Dr.","city":"Obscuria","state":"IL","zip":60100}    us    ca

Time taken: 0.312 seconds, Fetched: 4 row(s)



5、查看hdfs中的文件

hadoop fs -ls /data/gamein/g4_us/meta/employees/country=us/state=ca

Found 1 items

-rwxr-x---   3 ljhn1829 g4_us        428 2015-05-12 12:49 /data/gamein/g4_us/meta/employees/country=us/state=ca/progamming_hive_data.txt

该文件中的内容与原有文件一致。





(四)通过select子句插入数据

1、创建表

create table employees2 (

    name string,

    slalary float,

    suboddinates array<string>,

    deductions map<string,float>,

    address struct<stree:string, city:string, state:string, zip:int>

)

partitioned by(country string, state string);



2、插入数据

hive>  set hive.exec.dynamic.partition.mode=nonstrict;

否则会出现以下异常:

FAILED: SemanticException [Error 10096]: Dynamic partition strict mode requires at least one static partition column. To turn this off set hive.exec.dynamic.partition.mode=nonstrict



insert into table employees2

partition (country,state)

select name,slalary,suboddinates,deductions,address, e.country, e.state

from employees e;

HIVE快速入门的更多相关文章

  1. Hadoop生态圈-Hive快速入门篇之HQL的基础语法

    Hadoop生态圈-Hive快速入门篇之HQL的基础语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客的重点是介绍Hive中常见的数据类型,DDL数据定义,DML数据操作 ...

  2. Hadoop生态圈-Hive快速入门篇之Hive环境搭建

    Hadoop生态圈-Hive快速入门篇之Hive环境搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据仓库(理论性知识大多摘自百度百科) 1>.什么是数据仓库 数据 ...

  3. [转帖]Hive 快速入门(全面)

    Hive 快速入门(全面) 2018-07-30 16:11:56 琅琊山二当家 阅读数 4343更多 分类专栏: hadoop 大数据   转载: https://www.codercto.com/ ...

  4. HIVE快速入门 分类: B4_HIVE 2015-06-06 11:27 59人阅读 评论(0) 收藏

    (一)简单入门 1.创建一个表 create table if not exists ljh_emp( name string, salary float, gender string) commen ...

  5. Hive数仓之快速入门(二)

    上次已经讲了<Hive数据仓库之快速入门一>不记得的小伙伴可以点击回顾一下,接下来我们再讲Hive数据仓库之快速入门二 DQL hive中的order by.distribute by.s ...

  6. sqoop 1.4.4-cdh5.1.2快速入门

    一.快速入门 (一)下载安装 1.下载并解压 wget http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.2.tar.gz tar - ...

  7. Hadoop生态圈-大数据生态体系快速入门篇

    Hadoop生态圈-大数据生态体系快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.大数据概念 1>.什么是大数据 大数据(big data):是指无法在一定时间 ...

  8. Spark2.x学习笔记:Spark SQL快速入门

    Spark SQL快速入门 本地表 (1)准备数据 [root@node1 ~]# mkdir /tmp/data [root@node1 ~]# cat data/ml-1m/users.dat | ...

  9. 大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(重点)

    第1章 Flume概述1.1 Flume定义1.2 Flume组成架构1.2.1 Agent1.2.2 Source1.2.3 Channel1.2.4 Sink1.2.5 Event1.3 Flum ...

随机推荐

  1. 利用google浏览器开发者工具调试网页(详)

    前端程序员或者在校大学生正在开发网页,如果想要测试或者通过测试优化网页结构,该怎么办呢?这就需要用到一款工具,chrome浏览器的开发者工具?本文写给尚不熟悉这个开发者工具的同学们或者同行们,话不多说 ...

  2. Oracle 基本命令

    (1)查看所有表 >select * from tab; (2)查看表结构 >desc 表名; (3)将查询出来的字段显示为其他名称 >select empno as 员工编号 fr ...

  3. Cisco C2900XL

    http://docstore.mik.ua/univercd/cc/td/doc/product/lan/c2900xl/c2900sa4/sa4cr/macintr.htm#xtocid10160 ...

  4. android之针对fragment多次调用onCreateView的问题

    private View rootView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup contain ...

  5. perl dbi 测试 mysql wait_timeout

    The number of seconds the server waits for activity on a noninteractive connection before closing it ...

  6. HASH JOIN算法

    哈希连接(HASH JOIN) 前文提到,嵌套循环只适合输出少量结果集.如果要返回大量结果集(比如返回100W数据),根据嵌套循环算法,被驱动表会扫描100W次,显然这是不对的.看到这里你应该明白为 ...

  7. iOS 9之Safari广告拦截器(Content Blocker)

    金田( github 示例源码) 相对于谷歌对广告拦截的禁止,苹果与之态度截然相反,继Mac版Safari加入广告拦截工具之后,即将到来的iOS9对Safari也引入了内容拦截插件-Content B ...

  8. HDU_2026——将单词的首字母变大写

    Problem Description 输入一个英文句子,将每个单词的第一个字母改成大写字母.   Input 输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行.   O ...

  9. POJ(2784)Buy or Build

    Buy or Build Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1369   Accepted: 542 Descr ...

  10. ArcGIS加载高德、OSM和谷歌等地图

    1. 引言 网络地图对于我们来说已经不是什么新鲜事了,上面有各大互联网公司收集的海量的地理空间数据.一般网络地图的地图是以切片形式存在的,因此,本文重点讲述如何将这些网络切片地图加载并显示再ArcGI ...