(一)简单入门

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快速入门 分类: B4_HIVE 2015-06-06 11:27 59人阅读 评论(0) 收藏的更多相关文章

  1. Retinex系列之McCann99 Retinex 分类: 图像处理 Matlab 2014-12-03 11:27 585人阅读 评论(0) 收藏

    一.McCann99 Retinex McCann99利用金字塔模型建立对图像的多分辨率描述,自顶向下逐层迭代,提高增强效率.对输入图像的长宽有 严格的限制,要求可表示成 ,且 ,. 上述限制来源于金 ...

  2. C#中的线程(上)-入门 分类: C# 线程 2015-03-09 10:56 53人阅读 评论(0) 收藏

    1.     概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线 ...

  3. 百度编辑器UEditor ASP.NET示例Demo 分类: ASP.NET 2015-01-12 11:18 346人阅读 评论(0) 收藏

    在百度编辑器示例代码基础上进行了修改,封装成类库,只需简单配置即可使用. 完整demo下载 版权声明:本文为博主原创文章,未经博主允许不得转载.

  4. Train Problem I 分类: HDU 2015-06-26 11:27 10人阅读 评论(0) 收藏

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. Least Common Ancestors 分类: ACM TYPE 2014-10-19 11:24 84人阅读 评论(0) 收藏

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  6. 二分图匹配(KM算法)n^4 分类: ACM TYPE 2014-10-04 11:36 88人阅读 评论(0) 收藏

    #include <iostream> #include<cstring> #include<cstdio> #include<cmath> #incl ...

  7. Segment Tree with Lazy 分类: ACM TYPE 2014-08-29 11:28 134人阅读 评论(0) 收藏

    #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; stru ...

  8. 8大排序算法图文讲解 分类: Brush Mode 2014-08-18 11:49 78人阅读 评论(0) 收藏

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 常见的内部排序算法有:插入排序.希尔排序. ...

  9. C语言之void类型及void指针 分类: C/C++ 2015-07-13 11:24 8人阅读 评论(0) 收藏

    原文网址:http://www.cnblogs.com/pengyingh/articles/2407267.html 1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在 ...

随机推荐

  1. 网络最大流算法—Dinic算法及优化

    前置知识 网络最大流入门 前言 Dinic在信息学奥赛中是一种最常用的求网络最大流的算法. 它凭借着思路直观,代码难度小,性能优越等优势,深受广大oier青睐 思想 $Dinic$算法属于增广路算法. ...

  2. C++ 补课(二)

    1,如果遇到派生类成员和基类成员的名称冲突的情况,程序会采用派生类成员执行相应的操作.如果需要使用基类中的同名成员,则必须在程序中使用全局分辨符“::” 虚基类 —— 派生类在继承基类时加入“virt ...

  3. HDU 4704 Sum 超大数幂取模

    很容易得出答案就是2^(n-1) 但是N暴大,所以不可以直接用幂取模,因为除法操作至少O(len)了,总时间会达到O(len*log(N)) 显然爆的一塌糊涂 套用FZU1759的模板+顺手写一个大数 ...

  4. 解决create-react-app 后 npm start 中出现 的webpack版本问题和webpack-dev-server的版本问题

    利用VSCode搭建react的脚手架运行环境的时候.create-react-app之后npm start出现如下图的问题: There might be a problem with the pr ...

  5. 洛谷 P1850 换教室

    P1850 换教室 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq ...

  6. UDP 打洞示例 包含 服务器 客户端

    客户端示例: #include "Net.h" #include "../p2pInfo.h" int main() { CUdp  udp; if (0!=u ...

  7. 一句SQL按照某个字段数值拆分出对应的数据条数,借助数据库常量表【master..spt_values】实现

    简介:master..spt_values,数据行拆分简单小技巧 SELECT ProjGUID , CostGUID , SUM(FtAmount) AS FtAmount , BeginMonth ...

  8. Bitmap Image Graphics

    Bitmap Image  Graphics private void DrawImagePointF(PaintEventArgs e){ // Create image.    Image new ...

  9. BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊(LCT)

    Description 某天,Lostmonkey发明了一种超级弹力装置,为了在 他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装 ...

  10. android开发者要懂得问题答案

    我在网上看了一下有些人在博客上提出一些什么android开发者必须懂得问题,可是就是没有答案,所以我就把这些问题拷贝过来了.顺便也把全部的答案加上,为了让很多其它的开发者高速的找到答案,谢谢! 以下的 ...