草庐IT

hive-overwrite

全部标签

Hive学习(11)hive去除空格或去掉字符串前后或中间的某一字符串

问题:HIVE中不支持trim(leading)、trim(trailing)、trim(both)函数需求:需要去除字符串中前N位/后N位指定字符例如:11ABC11MySQL中可使用以下函数解决:1>.去掉左边指定的字符串TRIM(LEADING'a'FROM'11ABC11')2>.去掉右边指定的字符串TRIM(TRAILING'a'FROM'11ABC11')用于去除字符串结尾的指定字符;3>.去掉前后指定的字符串TRIM(BOTH'a'FROM'11ABC11')补充: trim()用于去除原字段左右两边的空格 ltrim()和rtrim()用于去除原字段左/右的空格Hive中可使用

FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me

当hive-site.xml以及mysql等都配置好时,格式化元数据库进入hive,仍然报未格式化元数据库的错hive>showdatabases;FAILED:HiveExceptionjava.lang.RuntimeException:Unabletoinstantiateorg.apache.hadoop.hive.ql.metadata.Sesshive>showdatabases;第一种方法便是把元数据删除,重新格式化dropdatabasemetastore;schematool-initSchema-dbTypemysql第二种,便是上诉方法并未解决,看报错信息是metasto

Hive安装与启动

一、mysql安装在配置Hive之前一般都需要安装和配置MySQL,因为Hive为了能操作HDFS上的数据集,那么他需要知道数据的切分格式,如行列分隔符,存储类型,是否压缩,数据的存储地址等信息。为了方便以后操作所以他需要将这些信息通过一张表存储起来,然后将这张表(元数据)存储到mysql中。为了啥存储到mysql里(实际是远程mysql),因为hive本身就是一个解释器,所以他不存储数据,可以参考上一篇文章[MySQL安装]进行安装(https://www.cnblogs.com/ruo1101/p/17470047.html"MySQL安装")二、Hive的安装与启动1.安装Hive1.1

Hive(23):Select高级查询之SORT/ORDER/CLUSTER/DISTRIBUTE BY

1ORDERBYORDERBY[ASC|DESC]HiveSQL中的ORDERBY语法类似于SQL语言中的ORDERBY语法。会对输出的结果进行全局排序,因此底层使用MapReduce引擎执行的时候,只会有一个reducetask执行。也因此,如果输出的行数太大,会导致需要很长的时间才能完成全局排序。默认排序顺序为升序(ASC),也可以指定为DESC降序。在Hive2.1.0和更高版本中,支持在“orderby”子句中为每个列指定null类型结果排序顺序。ASC顺序的默认空排序顺序为NULLSFIRST,而DESC顺序的默认空排序顺序为NULLSLAST。---orderby--根据字段进行排

Linux中操作Hive常用命令

Linux中操作Hive常用命令1、连接hivehiveshell2、输入hive的用户名和密码username:hivepassword:hive3、查询所有数据库showdatabases;4、查询所有数据表showtables;5、创建数据库createdatabase数据库名称;比如:createdatabasetest;6、删除数据库dropdatabase数据库名称;比如:dropdatabasetest;注意:如果存在表会删除失败。解决这个失败问题有2个方法:第1个方法:先删除对应库的所有表,再删除库。第2个方法:使用cascade关键字执行强制删库。dropdatabaseif

Hive数据表删除数据操作

hive数据表中,数据的删除不可以想Oracle、MySQL那样使用delete语句删除,所以在删除数据的时候使用另外的方法hive的数据删除,一般是两种方式1,删除具体partitionaltertabletable_namedroppartition(partiton_name='value')eg:altertabletest_datadroppartition(dt='2022-06-25')2,删除数据表某一条数据当需要删除某一条数据的时候,我们需要使用insertoverwriteinsertoverwritetabletable_nameselect*fromtable_name

HIve中count(1),count(*),count(字段名)三种统计的区别

count(1)和count()比较单独看三种返回数据的查询结果来看,count()和count(1)几乎可以说是没有区别的。count(*)和count(1)都会把值为null的行都进行统计。第一种count()第二种count(1)可以很清楚的看到,虽然查询的结果是一样的,但是查询时间效率上count()用时2.674秒,而count(1)用时才0.29秒,足足差了10倍,因此在生产环境中强烈建议不要使用count(*)直接使用count(1)第三种count(字段名)count(字段名)则剔除值为null的行后再统计计数,包括count(distinct字段名)也是会剔除值为null的行

【Hive|Spark】spark写入hive表存储格式问题

目录一、问题描述二、原因分析1、报错信息分析2、思考3、结论三、解决办法一、问题描述    spark经过转化的DF/DS,存储hive的一般写法为:DF.write.format("orc").mode(SaveMode.Append).saveAsTable("default.student")    1、如果hive本身不存在此表,则会在hive自动创建对应的表进行数据存储。    2、如果hive中存在此表,则就会分为两种情况进行考虑。        第一种情况:存在的student表是使用spark写入hive程序自动创建得到的,则这种情况下可以正常写入。        DF.wri

【Hive|Spark】spark写入hive表存储格式问题

目录一、问题描述二、原因分析1、报错信息分析2、思考3、结论三、解决办法一、问题描述    spark经过转化的DF/DS,存储hive的一般写法为:DF.write.format("orc").mode(SaveMode.Append).saveAsTable("default.student")    1、如果hive本身不存在此表,则会在hive自动创建对应的表进行数据存储。    2、如果hive中存在此表,则就会分为两种情况进行考虑。        第一种情况:存在的student表是使用spark写入hive程序自动创建得到的,则这种情况下可以正常写入。        DF.wri

Hive报错org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

报错Errorwhilecompilingstatement:FAILED:ExecutionError,returncode1fromorg.apache.hadoop.hive.ql.exec.mr.MapredLocalTask执行Hive两个表JOIN时出现如上错误报错原因:执行的join是大表和小表进性join,而Hive默认开启了MapJoin,即:hive.auto.convert.join=true;但集群机器内存不够,导致出错。MapJoinmapjoin本身是Hive优化的一种方式,即:如果关联的表中只有一张表是小表,那么可以在最大的表通过mapper的时候将小表放到内存中