Hive数据操作

Hive数据操作

Hive执行命令方式

  • cli,jdbc,hwi,beeline
  • cli shell
    • hive -help
    • hive –help
    • list,source
  • 注:命令脚本必须在集群的节点或hiveclient执行

Hive操作-变量

  • 配置变量
    • set val=”;
    • ${hiveconf:val}
    • select * from text where name=${hiveconf:val}
  • 环境变量
    • ${env:HOME},注env查看所有环境变量

Hive数据加载

  • 内表数据加载
    • 创建表时加载
      • create table newtable as select col1,col2 from oldtable
    • 创建表时指定数据位置
      • create table tablename() location ”
    • 本地数据加载
      • Load data local inpath ‘localpath’ [overwrite] into table tablename
    • 加载hdfs数据
      • Load data inpath ‘hdfspath’ [overwrite] into table tablename
    • 使用Hadoop命令拷贝数据到指定位置(hive的shell中执行和Linux的shell执行)
  • 由查询语句加载数据
    • insert [overwrite|into] table tablename
      select col1,col2 from table where..
    • from table
      insert [overwrite|into] table tablename
      select col1,col2
      where…
    • 注意字段对应不同于一些关系型数据库
  • 外表数据加载
    • 创建表时指定数据位置
      • create external table tablename () location ”
    • 查询插入,同内表
    • 使用Hadoop命令拷贝数据到指定位置(hive的shell中执行和Linux的shell执行)
  • 分区表数据加载
    • 内部分区表和外部分区表数据加载
      • 内部分区表数据加载方式类似于内表
      • 外部分区表数据加载方式类似于外表
        • 注意:数据存放的路径层次要和表的分区一致
        • 如果分区表没有新增分区,即使目标路径下已经有数据了,但依然查不到数据
    • 不同之处
      • 加载数据指定目标表的同事,需要指定分区
    • 本地数据加载
      • load data local inpath ‘localpath’ [overwrite] into table tablename partition(pn=”)
    • 加载hdfs数据
      • load data inpath ‘hdfspath’ [overwrite] into table tablename partition(pn=”)
    • 由查询语句加载数据
      • insert [overwrite] into table tablename partition(pn=”)
        select col1,col2 from table where…
  • Hive数据加载注意问题
    • 分隔符问题,且分隔符默认只有单个字符
    • 数据类型对应问题
      • Load数据,字段类型不能互相转化时,查询返回NULL
      • select查询插入,字段类型不能相互转化时,插入数据为NULL
    • select查询插入数据,字段值顺序要与表中字段顺序一致,名称可不一致
      • Hive在数据加载时不做检查,查询时检查
    • 外部分区表需要添加分区才能看到数据
      • alter table add partition(dt=’11111′)
    原文作者:发条香蕉
    原文地址: https://www.jianshu.com/p/a7d236cd31dc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞