• hive工作记录-20180513


    Hive的数据导入:

      1.从本地文件系统中导入数据到Hive表

        基础语法1 :

          create table 表名(列名1 数据类型, 列名2 数据类型, … …) row format delimited fields terminated by '分隔符' stored as textfile

        参数解释:

          row format delimited --设置创建的表在加载数据的时候,支持的列分隔符

          fields terminated by '分隔符' --指明具体的分隔符

          stored as '数据类型' --设置加载数据的类型,默认textfile(纯文本)

        基础语法 2:

          load data local inpath '本地文件完整路径' into table 表名

        代码示例:

          create table hospital(hospitalid string, hcount double, hallcost double, hreimbursecost double, hcure double, hday double, hrecovery double, ocount double,     ohallcost double, ohreimbursecost double, ocure double, ohrecovery double) row format delimited fields terminated by ' ' stored as textfile;

          load data local inpath '/home/hadoop/part-r-00000' into table hospital;

      2.从HDFS中导入数据到Hive表

        基础语法:

          建表语句同上

          load data inpath 'hdfs文件完整路径' into table 表名

        代码示例:

          load data inpath '/guide/hospitaloutput/part-r-00000' into table hospital;

      3.从别的表中查询出相应的数据并导入到Hive表中

        基础语法:

          建表语句同上

          insert into table 目标表名 select * from 源表名;  //不覆盖数据

          insert overwrite table 目标表名 select * from 源表名;  //覆盖数据

      4.在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中

        基础语法:

          create table 新表名 as select * from 旧表名

          新建表的结构和数据都和源表一致

      5.导入数据到带有分区的表

        基础语法:

          建表语句同上

          alter table 表名 add partition(分区1='值1',分区2='值2',... ...); //添加具体分区(子文件夹)

          load data local inpath '本地文件路径' into table 表名 partition(分区1='值1',分区2='值2',… …);

        注意事项:

          分区文件夹需要在使用前创建

          分区也是列名

          分区2是分区1的子文件夹,以此类推

          导入数据时,并不按照具体的值筛选

      6.导入数据到带有桶的表

        注意事项: 需要设置环境变量:set hive.enforce.bucketing=true;

        示例代码:

          create table hospitalcopy5(hospitalid string, hcount double, hallcost double, hreimbursecost double, hcure double, hday double, hrecovery double, ocount double,     ohallcost double, ohreimbursecost double, ocure double, ohrecovery double) clustered by(hospitalid) into 2 buckets row format delimited fields terminated by ' ' stored     as textfile;

          insert overwrite table hospitalcopy6 select * from hospital;

  • 相关阅读:
    oracle 进阶之model子句
    SiteMesh的使用--笔记
    JZ49:把字符串转换成整数
    面试题45:把数组排成最小的数
    面试题43:1~n整数中1出现的次数
    面试题42:连续子数组的最大和
    面试题41:数据中的中位数
    面试题40:最小的k个数
    面试题39:数组中出现次数超过一半的数字
    面试题38:字符串的排列
  • 原文地址:https://www.cnblogs.com/qinshifu/p/9032294.html
Copyright © 2020-2023  润新知