• Hive的连接和运行模式


    原文链接:

    https://www.toutiao.com/i6771018203687551495/

    Hive的连接

    启动hadoop的时候将history也启动,如果出问题,可以方便我们后续定位

    首先将Hive变成对外开放

    启动hiveserver2

    我们查看下

    如果杀掉需要用kill -9 PID的方式

    启动beeline

    查看帮助信息

    简单使用下,和mysql中显示一样

    官网

    我们往下拉

    !connect jdbc:hive2://localhost:10000

    我们直接使用root登录,不被允许

    User: root is not allowed to impersonate root(state=08S01,code=0)

    错误原因是

    在core-site.xml中,有一个配置

    这个地方可以理解为

    hadoop.proxyuser.xxx.hosts和hadoop.proxyuser.xxx.groups

    xxx设置为root(即你的错误日志中显示的User:xxx为什么就设置为什么)

    “*”表示可通过超级代理“xxx”操作hadoop的用户、用户组和主机

    主要原因是hadoop引入了一个安全伪装机制,使得hadoop 不允许上层系统直接将实际用户传递到hadoop层,而是将实际用户传递给一个超级代理,由此代理在hadoop上执行操作,避免任意客户端随意操作hadoop

    而hadoop内部还是延用linux对应的用户和权限。即你用哪个linux用户启动hadoop,对应的用户也就成为hadoop的内部用户

    修改core-site.xml(我之前这个地方写的其它用户)

    重新连接

    退出

    登录之后,可以使用一些命令

    JDBC连接

    我们新建项目执行代码

    执行代码

    我们看hive中,已经新建了表格,其它语句可以完成官网示例,不再一一练习

    Hive的运行模式

    依据Hive的安装和metastore的设置机器,分为下面三个模式:

    嵌入模式:使用自带的derby数据库

    本地模式:将metastore放在mysql,并且mysql和hive安装在同一台机器上

    远程模式:将metastore放在mysql,并且mysql和hive安装在不同一台机器上

    其中配置远程的配置文件是

    配置内容是

    指定hive连接数据库(mysql所在的机器)

    端口号默认是9083

    也可以启动服务:bin/hive –service metastore &(不建议这种方式)

    有时候我们发现hive会跑mapreduce有时候不会,那是因为fetch模式

    在hive-site.xml.template中

    None模式

    不管写什么SQL都会跑mapreduce

    Minimal模式

    当select*、针对分区字段进行过滤、以及limit不会跑mapreduce

    More模式

    当select*、过滤、以及limit不会跑mapreduce

    虚拟列

    官网

    我们查询下

    进入db_deptemp,执行语句

    select *, INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE from emp;

  • 相关阅读:
    BZOJ3899 仙人掌树的同构(圆方树+哈希)
    BZOJ3590 SNOI2013Quare(状压dp)
    BZOJ2178 圆的面积并(simpson积分)
    BZOJ3724 PA2014Final Krolestwo(欧拉回路+构造)
    BZOJ3589 动态树(树链剖分+容斥原理)
    BZOJ3453 XLkxc(拉格朗日插值)
    BZOJ4650 NOI2016优秀的拆分(后缀数组)
    Luogu5058 ZJOI2004嗅探器(割点)
    shutil模块---文件,文件夹复制、删除、压缩等处理
    面向过程---通过查找字符串,找到相应的文件路径
  • 原文地址:https://www.cnblogs.com/bqwzy/p/12535706.html
Copyright © 2020-2023  润新知