AmosCloud

Library

Have a Question?

If you have any question you can ask below or enter what you are looking for!

Hive_day03

hive

  • hive查看表信息
-- 查看表的附加信息
desc extended table_name;
-- 查看表的详细信息
desc formatted table_name;
  • 表的截断
    当我们需要删除一个表的数据并且保留表结构时

    1. 直接使用delete不指定条件(效率差,逐行删除)
    2. 先找到建表语句,drop表,再重新创建
    3. truncate table table_name 与2的过程类似;
  • hive数据的导入

-- hive里面保存的通常是较大的数据量级
-- 如果使用insert,每条数据都要跑MR
-- 通常使用加载的方式或者直接上传文件的方式进行数据的导入
load data [local] inpath '/root/data/student.txt' [overwrite] into table student [partition (partcol1=val1,…)];
-- 1. 从linux本地上传文件到表中(上传-复制)
load data local inpath '/linux/local/path' into table table_name;
-- 2. 从hdfs的其他路径移动到表路径(移动-剪切)
load data inpath 'hdfs://namenode:9000/xxx/xx' into table table_name;
-- 3. 将文件上传到hdfs,在建表时指定location设置到文件所在的路径
-- 注意!练习时,我们使用内部表方便删除,生产环境没有特别说明的,统一使用外部表。
-- 4. 以查询语句作为数据源,创建新的表
create table t2 as select * from t1 xxxx;
  • hive数据的导出

    -- 1 insert除了可以插入到hive中,还可以将数据写入到磁盘文件中
    -- 1.1 写入本地路径
    insert overwrite local directory '/root/data/student' select * from stu1;
    -- 1.2 写入本地路径并且指定格式
    insert overwrite local directory '/root/data/student1' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS TERMINATED BY '\n' select * from stu1;
    -- 1.3 不加local,是将数据导出到hdfs路径
    -- 2. 因为hive的数据在hdfs上,所以也可以找到表对应的文件路径,直接使用hdfs的下载,将文件传输到本地
  • hive的两个常用命令

    -- 不进入hive客户端,直接将一个sql语句提交给hive执行
    hive -e 'sql语句'
    -- hive会将查询结果返回给控制台打印,通常用于下载表文件,可以将查询的结果重定向到文件中
    hive -e 'sql语句' >> res.txt

sqoop

  • 是什么
    sqoop是Hadoop生态中,专门用来进行数据迁移的一个工具。
    主要两类操作 导入(非大数据环境到大数据环境)/导出
    sqoop本质就是将命令转换成MR程序执行

FIHD-loader(sqoop)

练习

https://www.cnblogs.com/yuejiaming/p/10572358.html

  • 日期相关
  • 字符串相关
  • 之前的日志分析需求,尝试使用hive进行处理