(一)简单入门

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. js前台与后台数据交互

    客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本 用途 何时使用服务器代码向页中添加客户端脚本: u 当客户端脚本的内容依赖于直到运行时才可用的信息时 u ...

  2. python 操作 mysql基础补充

    前言 本篇的主要内容为整理mysql的基础内容,分享的同时方便日后查阅,同时结合python的学习整理python操作mysql的方法以及python的ORM. 一.数据库初探 在开始mysql之前先 ...

  3. Jsonp 解决跨域问题

    话不多说直接贴代码: $.ajax({ async: false, url: 'http://****.****.com/Handler.ashx?vueId=iwNavpicS2', type: & ...

  4. Google Chrome快捷键大全

    信很多朋友在使用过Google Chrome之后,就会不想回到原先使用的浏览器了,尤其是IE.没错Google Chrome的优点很多,已经获得了一大部分网友们的用户,软件志现在也是Firefox+C ...

  5. GitHub 如何基於 Node.js 和 Chromium 開發 Atom?

    看到回答里, 多数都没有回答到点子上, 还有些给了非常主观的意见而没有给出实际结论和分析过程. 题主的问题有四个: 1. Github 如何基于 Node.js 和 Chromium 开发 Atom? ...

  6. 我学hash_map(2)

    啊,转眼之间就来到了我学hash_map(2)了.我们也从hash_map转移到了unordered_map上来了,今天这个文章的目的就是要来分享一下使用这个hash_map,哦不,unordered ...

  7. android 初学: 提示No Launcher activity found!

    提示No Launcher activity found! 三步检查: 1 必须有 <category android:name="android.intent.category.LA ...

  8. java基础知识(一)

    基本特征:封装性,继承性,多态性 一些新特征: 静态导入:import static 包名 可变参数的函数:add(int -x) 增强版for循环: for(int x:xs) 自动拆箱: 基本类型 ...

  9. SQL-MICK基础

    /*Select语句完整的执行顺序:1.from子句组装来自不同数据源的数据:2.where子句基于指定的条件对记录行进行筛选:3.group by子句将数据划分为多个分组:4.使用聚集函数进行计算: ...

  10. centos虚拟机NAT静态IP设置

    宿主机为Centos6.3 64位,三台虚拟机为为Centos6.3 64位.虚拟机的网络连接方式为默认的NAT方式.虚拟机默认为DHCP方式动态获取IP.为了在三台虚拟机上搭建hadoop,需要将这 ...