• Hive踩坑指南


    1  Hive简介

    Hive是一个数据仓库基础工具,在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。

    它提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。但是不要把Hive当作以下东西:

    • 一个关系数据库
    • 一个设计用于联机事务处理(OLTP)
    • 实时查询和行级更新的语言

    它只是一个数据仓库,存放的都是文件。Hive有具以下特点:

    • 它存储架构在一个数据库中并处理数据到HDFS
    • 它是专为OLAP设计
    • 它提供SQL类型语言查询叫HiveQL或HQL
    • 它是熟知,快速,可扩展和可扩展的

    2  常用操作

    由于Hive操作与SQL语句有一定程度上的不同,故记录一下。

    • 创建表:
      1 create table tmp.tbl_website_about(domain string, home string, about string, service string, product string);
    • 增加字段:
      1 ALTER TABLE tmp.tbl_website_about ADD COLUMNS(language STRING);
    • 保留字段,其余字段全删除:
      1 ALTER TABLE tmp.tbl_website_about REPLACE COLUMNS(language STRING);

      注意,该代码表示只保留language字段,其余全删除。

    • 插入多条数据:
      1 insert into tmp.tbl_website_about values('1','2','3','4','5','6'),('q','w','e','r','t','y');
      注意,因为Hive是默认以换行符作为字段分隔符,所以在插入文本时往往会因换行符导致若干问题出现,此问题暂无解决方法,只能将 替换为空格后再进行存储,也可以参考这篇文章
    • 删除表中所有数据:
      1 truncate table tmp.tbl_website_about;
      注意,Hive不支持delete删除,也不支持where行删除。
    • 删除表(可恢复):
      1 drop table tmp.tbl_website_about;
    • 永久删除表(不可恢复):
      1 drop table tmp.tbl_website_about purge;

    3  Tidb数据库的表中数据复制到Hive

    1. 进入到HIve的服务器内,并进入指定用户,例如:
      1 $ ssh emr-v2-gateway
      2 $ sudo su - hadoop
    2. 通过以下指令进入到spark-shell。
      1 spark-shell --executor-memory 8g --driver-memory 4g --num-executors 5
    3. 通过以下指令复制表内容。
      1 val df = spark.sql("select * from tidb_spider.tbl_website_about")
      2 df.write.mode("overwrite").saveAsTable("tmp.tbl_website_about_test")

      注意,overwrite表示全覆盖,即使表字段不同,也会根据Tidb中的字段结构重新规划字段结构。

    4  CSV文件导入Hive

    在实际应用中,往往需要将CSV文件导入到Hive中,方便于多表查询。

    将本机文件上传至将远程服务器可以参考这篇文章,CSV文件转为Hive可以参考以下步骤。

    1. 根据SCV的字段结构在hive中创建表,例如:
      1 create table tmp.website_about_dolang(domain string, language string) row format delimited fields terminated by ','; 

      注意,一定要以逗号为分隔符。

    2. 进入到Hive的服务器内,并进入指定用户,例如:
      1 $ ssh emr-v2-gateway
      2 $ sudo su - hadoop
    3. 输入 hive 指令,进入HIve。
    4. 输入以下指令,导表。
      1 $ load data local inpath '/home/hadoop/andrew/domainLanguage.csv' overwrite into table website_about_dolang;
  • 相关阅读:
    fedora安装后的配置
    linux下的Shell编程(7)使用-x和-n调试shell程序
    linux下的Shell编程(8)自定义函数
    linux下的Shell编程(6)case和select
    linux下的Shell编程(5)循环
    linux下的Shell编程(4)特殊的变量和占位符
    linux下的Shell编程(3)shell里的流程控制
    Linux下的Shell编程(2)环境变量和局部变量
    Linux下的Shell编程(1)最简单的例子
    Docker学习笔记
  • 原文地址:https://www.cnblogs.com/qijunhui/p/11373205.html
Copyright © 2020-2023  润新知