云上贵猪的个人博客 - hive
type: channel
link: https://a-hxin.cn/tag/hive/
items: hive_sql_week12
items: hive_sql_week10
items: hive启动 和关闭步骤
items: 踩坑Hive｜Error: Could not open client transport with JDBC Uri
items: week09—练习—lenovo_class01
items: hive安装与配置
items: 踩坑｜Hive 无法连接hive FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
items: 启动Hive手册

hive_sql_week12
type: item
date: 2024-05-27T01:59:00+08:00
description: -- Hive SQL-DQL-select 查询数据 -- Join -- 一 、基本环境准备： -- 1、打开HDFS完全分布式集群环境，保持集群环境健康可用； -- jps -- 2、启动beeline，测试是否可用。 -- beeline -u jdbc:hive2://hadoop202:10000 -n root -- 二、环境准备 -- 使用数据库 use lenovo_class07_lys; -- --显示所有的函数和运算符 show functions; -- --查看运算符或者函数的使用说明 describe function count; -- --使用extended 可以查看更加详细的使用说明 describe function extended count; -- 创建表格： -- --1、创建表dual create table dual(id string); -- --2、加载一个文件dual.txt到dual表中 -- --dual.txt只有一行内容：内容为一个空格（自行在Linux中创建，并加载） -- 测试：显示以下内容为成功 -- 1、在linux使用 -- echo " " > dual.txt -- hadoop fs -put dual.txt /user/hive/warehouse/lenovo_class07_lys.db/dual -- 2、将文件加载到表中： load data inpath '/user/hive/warehouse/lenovo_class07_lys.db/dual/dual.txt' into table dual; -- 3\test select 1+1 from dual; -- 三、关系运算符 -- 1、输出3和4进行“等于、大于、小于、不等于，小于等于，大于等于”关系运算的结果 select 3 = 4 as equal_result, 3 > 4 as greater_result, 3 < 4 as less_result, 3 <> 4 as not_equal_result, 3 <= 4 as less_equal_result, 3 >= 4 as greater_equal_result; -- 2、输入语句观察结果 -- 四、算数运算符 -- 1、计算17除以3，17乘以3，17+3，17-3，17对3取余数 select 17 / 3 as division_result, 17 * 3 as multiplication_result, 17 + 3 as addition_result, 17 - 3 as subtraction_result, 17 % 3 as modulus_result; -- 2、输入程序观察结果 -- -- -- 五、逻辑运算符：输入程序观察结果 select true and false as and_result, true or false as or_result, not true as not_result;

hive_sql_week10
type: item
date: 2024-05-27T01:56:00+08:00
description: us-covid19-counties.dat文件：https://www.lanzouw.com/iI4Bq1zv8d9i-- 1、准备一下select语法测试环境， -- 新建数据库 CREATE DATABASE lenovo_class07_lys; -- 使用数据库 use lenovo_class07_lys; -- 2、创建表t_usa_covid19 CREATE TABLE t_usa_covid19 ( count_date STRING, county STRING, state STRING, fips INT, cases INT, deaths INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; -- 将文件上传到HDFS 下面的这个目录 -- /user/hive/warehouse/lenovo_class07_lys.db/t_usa_covid19 -- 3、将源数据load加载到t_usa_covid19表对应的路径下 LOAD DATA INPATH '/user/hive/warehouse/lenovo_class07_lys.db/t_usa_covid19/us-covid19-counties.dat' INTO TABLE t_usa_covid19; -- 4、创建一张分区表 基于count_date日期,state州进行分区， -- 在定义的时候定义除了上述两个字段外的其他四个字段， -- 用count_date日期,state进行分区。 -- 创建分区表t_usa_covid19_p: -- 权限问题：hdfs dfs -chmod -R 1777 / CREATE TABLE IF NOT EXISTS t_usa_covid19_p ( county STRING, fips INT, cases INT, deaths INT ) PARTITIONED BY (count_date STRING, state STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; -- 5、使用动态分区插入将t_usa_covid19中的数据导入t_usa_covid19_p中 -- 设置Hive动态分区配置 SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict; -- 插入数据到分区表 INSERT INTO TABLE t_usa_covid19_p PARTITION (count_date, state) SELECT county, fips, cases, deaths, count_date, state FROM t_usa_covid19; -- ============== -- 一、查询所有字段或者指定字段 -- （1）查询所有字段 SELECT * FROM t_usa_covid19_p; -- （2）查询确诊病例字段和所在州字段 SELECT cases, state FROM t_usa_covid19_p; -- 二、查询匹配正则表达式的所有字段 -- （1）查询所有以C开头的字段 SELECT county, cases FROM t_usa_covid19_p; -- （2）查询所有含有t字符的字段 SELECT count_date, state FROM t_usa_covid19_p; -- 三、查询使用函数 -- （1）统计cases列数 SELECT COUNT(cases) FROM t_usa_covid19_p; -- （2）统计cases总数 SELECT SUM(cases) FROM t_usa_covid19_p; -- 四、ALL /DISTINCT -- 1、统计cases总数 SELECT SUM(cases) FROM t_usa_covid19_p; -- 2、去掉重复行后cases总数 SELECT SUM(DISTINCT cases) FROM t_usa_covid19_p; -- 3、county,state两个字段整体去重 SELECT DISTINCT county, state FROM t_usa_covid19_p; -- 五、where -- 1、表达式 -- （1）在where后面使用2>3和2<3作为条件进行查询过滤 SELECT * FROM t_usa_covid19_p WHERE 2 < 3; -- （2）在where后面使用2+3作为条件进行查询…

hive启动 和关闭步骤
type: item
date: 2024-05-04T06:29:00+08:00
description: hive启动步骤1、启动集群确定hadoop集群都启动成功了在浏览器访问 hadoop21:9870 能访问就是好的my_hadoop start # 启动hadoop集群 jpsall # 查看所有集群的进程[collapse status="false" title="查看详细："][root@hadoop21 conf]# my_hadoop start =================== 启动 hadoop集群 =================== --------------- 启动 hdfs --------------- Starting namenodes on [hadoop21] 上一次登录：六 5月 4 06:11:28 CST 2024 Starting datanodes 上一次登录：六 5月 4 06:19:04 CST 2024 Starting secondary namenodes [hadoop23] 上一次登录：六 5月 4 06:19:07 CST 2024 --------------- 启动 yarn --------------- Starting resourcemanager 上一次登录：六 5月 4 06:11:17 CST 2024 Starting nodemanagers 上一次登录：六 5月 4 06:19:23 CST 2024 [2]+ 退出 143 nohup hive --service hiveserver2 2> /tmp/hive_server2_error.log(工作目录：~) (当前工作目录：/opt/module/hive/conf) [root@hadoop21 conf]# jpsall =============== hadoop21 =============== 4707 NameNode 5171 NodeManager 4842 DataNode 5293 Jps =============== hadoop22 =============== 3493 Jps 2809 DataNode 3002 ResourceManager 3134 NodeManager =============== hadoop23 =============== 2641 Jps 2519 NodeManager 2329 DataNode 2429 SecondaryNameNode [root@hadoop21 conf]# [/collapse]2、启动hive服务必须启动以下两个服务才可以使用beeline启动 hiveserver2nohup hive --service hiveserver2 2>/tmp/hive_server2_error.log &启动 metastorenohup hive --service metastore 2>/tmp/hive_metastore_error.log &3、使用IDEA（Java编辑器）连接JDBC参考资料：在idea连接hive：https://blog.csdn.net/windinroad/article/details/1239220433、在linux中使用beeline连接jdbc beeline -u jdbc:hive2://hadoop21:10000 -n roothive关闭步骤1、关闭HiveServer2jps -m # 出现最前面的就是进程号 kill [进程号]如：2651 RunJar /opt/module/hive/lib/hive-service-3.1.2.jar org.apache.hive.service.server.HiveServer2 4511 Jps -m [root@hadoop21 conf]# kill 2651 [1]- 退出 143 nohup hive --service metastore 2> /tmp/hive_metastore_error.log(工作目录：~) (当前工作目录：/opt/module/hive/conf) 2、关闭hadoop如果之前配置过hadoop集群脚本命令可以用 my_hadoop 来关闭my_hadoop stop如果没有配置集群脚本：# 在hadoop22 关闭yarn stop-yarn.sh # 在hadoop21 关闭HDFS stop-dfs.sh

踩坑Hive｜Error: Could not open client transport with JDBC Uri
type: item
date: 2024-05-04T05:46:00+08:00
description: 1、报错[root@hadoop21 ~]# beeline -u jdbc:hive2://hadoop21:10000 -n root SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/module/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory] Connecting to jdbc:hive2://hadoop21:10000 24/05/04 05:34:50 [main]: WARN jdbc.HiveConnection: Failed to connect to hadoop21:10000 Could not open connection to the HS2 server. Please check the server URI and if the URI is correct, then ask the administrator to check the server status. Error: Could not open client transport with JDBC Uri: jdbc:hive2://hadoop21:10000: java.net.ConnectException: 拒绝连接 (Connection refused) (state=08S01,code=0) Beeline version 3.1.2 by Apache Hive2、基础检查1、查看防火墙端口100002、检查HiveServer2配置3、查看HiveServer2日志4、权限问题3、权限问题如果上面的都没有解决，那么就说HDFS的权限问题1、检查目录是否存在hadoop fs -ls /user/hive/warehouse2、创建目录（如果不存在）hadoop fs -mkdir -p /user/hive/warehouse3、设置适当的权限hadoop fs -chmod 777 /user/hive/warehouse

week09—练习—lenovo_class01
type: item
date: 2024-05-04T03:48:00+08:00
description: week09—练习—lenovo_class011、创建数据库如果有则不创CREATE DATABASE lenovo_class01_pxj;2、在库中建表可以用beeline连接：beeline -u jdbc:hive2://hadoop21:10000 -n root建表USE lenovo_class01_pxj;CREATE TABLE t_TL_hero ( attack_max INT COMMENT '最高物攻', defense_max INT COMMENT '最大物防', attack_range STRING COMMENT '攻击范围', role_main STRING COMMENT '主要定位', role_assist STRING COMMENT '次要定位' ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';3、上传HDFS可以使用hadoop Web 网页上传也可以直接在IDEA上传也可以使用HDFS 上传：[root@hadoop21 ~]# cd /opt/file/ [root@hadoop21 file]# ls archer.txt assassin.txt mage.txt support.txt tank.txt warrior.txt [root@hadoop21 file]# hdfs dfs -put ./* /user/hive/warehouse/lenovo_class01_pxj.db/t_tl_hero文件：https://www.123pan.com/s/lfKDVv-zVQNH.html提取码:22444、执行 SQL 语句可以在idea上面执行：SELECT COUNT(*) FROM t_TL_hero WHERE role_main = 'archer' AND hp_max > 6000;参考资料：在idea连接hive：https://blog.csdn.net/windinroad/article/details/123922043

hive安装与配置
type: item
date: 2024-05-04T03:46:00+08:00
description: hive安装与配置安装VMware导入提供的三个hadoop系统，分别为202，203，204连接xshell用hadoop账户连接账号：hadoop密码：123456在202里，登录Hadoop账户判断Hadoop是否安装echo $HADOOP_HOME echo $PATH检查是否安装，并配置Hadoop，如果没有，则去重新安装hadoophadoop与hive整合-配置core-site.xmlHive需要把数据存储在HDFS上，并且通过MapReduce作为执行引擎处理数据需要在Hadoop中添加相关配置属性，以满足Hive在Hadoop上运行。修改Hadoop中core-site.xml，并且Hadoop集群同步配置文件，重启生效。尝试改变目录到 $HADOOP_HOME/etc/hadoop，然后查找 core-site.xml文件：cd $HADOOP_HOME/etc/hadoop ls -l core-site.xml 其中的内容如下： hadoop.proxyuser.hadoop.hosts * hadoop.proxyuser.hadoop.groups * 如果有不一致，则vim编辑之。远程模式部署-hive-site查看Hive的配置目录，通常这个配置目录位于Hive安装目录下的 conf文件夹。以下是查找 hive-site.xml文件的命令：cd /opt/module/hive/conf ls -l hive-site.xml sta如果没有该文件，可以自行创建，比较快捷的方法是复制同目录下 hive-default.xml.template，然后做内容修改cp hive-default.xml.template hive-site.xmlhive-site.xml<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> javax.jdo.option.ConnectionURL jdbc:mysql://hadoop202:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8 javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root javax.jdo.option.ConnectionPassword 123456789 hive.metastore.warehouse.dir /user/hive/warehouse hive.metastore.schema.verification false hive.metastore.event.db.notification.api.auth false hive.metastore.uris thrift://hadoop202:9083 注意：最后指定了远程模式，部分同学可能在这里把远程模式跟本地模式搞混。启动metastore启动方式有三种直接启动Metastore服务:hive --service metastore这个命令会在前台启动Hive Metastore服务。这意味着服务会占用终端窗口，并且如果你关闭了终端或者按下 Ctrl+C，服务会停止运行。使用 nohup在后台启动Metastore服务:nohup hive --service metastore &在这个命令中，nohup用于在后台运行Hive Metastore服务，即使你退出了终端会话，服务也会继续运行。&将命令放到后台执行。不过，这个命令不会重定向错误日志，所以标准错误输出仍会显示在终端上，或者写入到 nohup.out文件中。使用 nohup在后台启动Metastore服务，并重定向错误日志:nohup hive --service metastore 2>/tmp/hive_metastore_error.log &这个命令也是在后台运行Hive Metastore服务，并且使用 2>将错误日志重定向到 /tmp/hive_metastore_error.log文件中。这样，任何错误信息都会被写入指定的日志文件，帮助你更好地管理和查看服务可能产生的错误信息。关闭服务当使用 nohup在后台运行Hive Metastore服务时，由于进程在后台执行，不能直接使用 Ctrl+C来停止它。需要找到运行该服务的进程ID（PID），然后使用 kill命令来停止它。以下是步骤：查找Hive…

踩坑｜Hive 无法连接hive FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
type: item
date: 2024-04-08T01:10:00+08:00
description: 踩坑｜Hive 无法连接hive FAILED: HiveException java.lang.RuntimeException:Unable to instantiate org.apache.hadoop.hive.ql.me问题点：[ mysql没有远程权限 ]、[ 没有metastore数据库 ]云上贵猪：20240408一、原因在Hive 执行 show databases;时出现如下报错FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me尝试重新格式化失败原因是因为服务器上的Mysql数据库root用户未开启权限。二、解决2.1、进入数据库中mysql -u root -p2.2、切换到mysqluse mysql;2.3、设置root用户的连接权限%的意思是允许所有IP连接数据库update user set host = '%' where user ='root';2.4、刷新权限flush privileges; 三、再次重新格式化3.1、在hive的bin目录格式化当前目录：/opt/module/hive-3.1.3/bin schematool -dbType mysql -initSchema接着提示说我们没有找到名为'metastore'的数据库，hive初始化失败查看了下数据库确实没有：show databases;如果有则要删了，在新建一个drop databases metastore; create database metastore;3.2、在mysql建立metastore数据库登录数据库并建立库mysql -uroot -p123456789 CREATE DATABASE metastore;3.3、再次格式化hivecd /opt/module/hive-3.1.3/bin schematool -initSchema -dbType mysql成功的标志四、启动hive启动的前提，确保hadoop、mysql都启动起来了环境变量都配置好了4.1、hive启动ps：要打开两个Xshell ,都在hadoop21运行第一窗口运行，不要关闭：hive --service metastore第二窗口运行hivehive hive> show databases; OK default Time taken: 0.603 seconds, Fetched: 1 row(s)成功解决查看及启动信息[root@hadoop21 ~]# jpsall =============== hadoop21 =============== 2688 DataNode 6416 RunJar 2977 NodeManager 3158 JobHistoryServer 2522 NameNode 7918 Jps =============== hadoop22 =============== 3523 Jps 2013 DataNode 2205 ResourceManager 2526 NodeManager =============== hadoop23 =============== 2032 DataNode 2219 NodeManager 3659 Jps 2141 SecondaryNameNode [root@hadoop21 ~]# hive which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/module/jdk1.8.0_121/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/opt/module/mysql-8.0.32/bin:/opt/module/jdk1.8.0_121/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/opt/module/hive-3.1.3/bin:/root/bin) SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/module/hive-3.1.3/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: F…

启动Hive手册
type: item
date: 2024-04-08T00:43:00+08:00
description: 启动Hive手册一、启动Hadoop集群脚本方式启动：【在21运行】my_hadoop start 一键启动hadoop：21的hdfs、22的yarn my_hadoop stop 一键关闭hadoop：21的hdfs、22的yarnjps查看进程Web服务网页：hadoop21:9870二、启动mysql（如果设置了开机自启动则省略）service mysql start三、启动Hiveps：要打开两个Xshell ,都在hadoop21运行3.1、第一窗口输入命令不要关闭：hive --service metastore运行 jps -mps：看到测启动成功【 RunJar /opt/module/hive-3.1.2/lib/hive-metastore-3.1.2.jar org.apache.hadoop.hive.metastore.HiveMetaStore】3.2、第二窗口知行启动hivehive运行sql语句show databases;看到则环境部署成功hive> show databases; OK default Time taken: 0.513 seconds, Fetched: 1 row(s)