草庐IT

Hive中的in、exists和left semi join

在hivesql开发的过程中,对于当前数据在另一个数据集合中,是否存在的判断有三种方式,一种是in,一种是exists,另一种可以是leftsemijoin,但是由于hive不支持in|notin子查询,所以如果是单纯判断一个值是否在一个集合里面存在的时候,可以用in,但是判断一个集合在另一个集合存在的时候,还是推荐使用exists和leftsemijoin。一、数据准备1,建表CREATETABLEtest.in_test1(idvarchar(10),namevarchar(10),sexvarchar(10),agevarchar(10));CREATETABLEtest.in_test

hive启动命令

bin/hive客户端1、启动元数据管理服务(必须启动,否则无法工作)        前台启动:bin/hive--servicemetastore        后台启动:nohupbin/hive--servicemetastore>>logs/metastore.log2>&1&2、启动客户端    HiveShell方式(可以直接写SQL):bin/hiveLastlogin:SatMay2708:10:462023[root@node1~]#/export/server/hive/bin/hiveSLF4J:ClasspathcontainsmultipleSLF4Jbindings

大数据开发之Hive案例篇14:某个节点HDFS块比较多

文章目录一.问题描述二.解决方案2.1查看节点安装的组件2.2排查HDFS配置2.3排查Yarn配置2.3.1首先查看下nodemanager的日志2.3.2查看container分配情况2.3.3查看调度机制2.3.4查看集群任务情况2.3.5集群负载情况2.3.6resourcemanager与nodemanager是否可以混合部署2.4初步判断2.5最终结论参考:一.问题描述今天早上到公司,突然收到CDH集群某个节点的存储量的告警,如下图所示:从图中可以看出,每个节点的HDFS空间是相同的,大多节点HDFS使用量在40%左右,而出问题的这个节点居然直逼80%,鉴于之前问题出现过多次,且每

大数据篇 | Hadoop、HDFS、HIVE、HBase、Spark之间的联系与区别

文章目录1、Hadoop2、HDFS3、HIVE4、HBase5、Spark1、HadoopHadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。它提供了一个可扩展的分布式文件系统(HDFS)和一个分布式计算框架(MapReduce),可以在大量廉价硬件上进行并行计算。2、HDFSHDFS(HadoopDistributedFileSystem)是Hadoop的分布式文件系统。它被设计用于在集群中存储和管理大规模数据集。HDFS将数据分割成块,并将这些块复制到不同的计算节点上,以提供容错性和高可用性。据我了解,大部分公司一般将模型需要的数据例如csv/libsvm格式的文件都会保

使用hive查看orc文件 orcfiledump命令详解 异常处理(Failed to read ORC file)

列式存储以orc和parquet文件居多,现阶段hive数据存储的主流格式是orc,然后结合presto(目前对orc的支持好于parquet)做一些即席查询。hive数据文件是直接存储在hdfs上,但是hadoop貌似没有提供直接查看文本的命令,好在hive提供了支持。文章目录一、ORC文件查看二、ORC文件修复一、ORC文件查看1.命令帮助:hive--serviceorcfiledump--help$hive--serviceorcfiledump--helpusage./hiveorcfiledump[-h][-j][-p][-t][-d][-rcol_ids>][--recover]

Hive中的HASH函数规则及示例

Hive中的HASH函数用于将任意长度的字符串或二进制数据映射为一个固定长度的整数值,其语法如下:HASH(str)其中,str是要进行哈希计算的字符串或二进制数据。Hive中的哈希函数采用的是MurmurHash算法,这是一种非常高效的哈希算法。该算法将输入数据分为若干个块,每个块都进行哈希计算,最终将所有块的哈希值合并起来得到最终的哈希值。由于哈希函数的特性,相同的输入数据每次计算得到的哈希值都是相同的,因此HASH函数可以用于对数据进行快速的去重或分组。下面举一个简单的例子来说明HASH函数的使用。假设有如下一张表:+----+--------+|id|name|+----+------

Hive 连接及使用

1.连接有三种方式连接hive:cli:直接输入bin/hive就可以进入clihiveserver2、beelinewebui1.1hiveserver2/beeline1、开启hiveserver2服务//前台运行,当beeline输入命令时,服务端会返回OK[root@hadoop1bin]#./hiveserver2OK//后台运行,1:表示标准日志输出、2:表示错误日志输出如果我没有配置日志的输出路径,日志会生成在当前工作目录,默认的日志名称叫做:nohup.xxxnohuphiveserver21>/home/hadoop/hiveserver.log2>/home/hadoop/

hive read time out

hive-jdbc版本:2.3.9报错信息如下:问题定位:客户端的socket连接读超时,默认超时时间为30秒,需要在应用端增大读超时时间。解决方案:1)hiveConnection在使用socket连接时,设置了超时时间为30秒,超时时间较短,在运行稍微复杂点的SQL时,就会导致超时。如下图。  2) hiveConnection的socket超时时间通过loginTimeout进行设置,而loginTimeout读取的DriverManager的超时时间,因此,在创建hive连接时需要设置DriverManage的loginTimeout属性。如下图。3)hiveConnection通常使

hive on spark 时,executor和driver的内存设置,yarn的资源设置

hiveonspark时,executor和driver的内存设置,yarn的资源设置。在使用HiveonSpark时,需要进行以下三个方面的内存和资源设置:Executor的内存设置在使用HiveonSpark时,需要根据数据量和任务复杂度等因素,合理地设置每个Executor的内存大小。通常情况下,每个Executor需要留一部分内存给操作系统和其他进程使用,同时为了避免过度调度,每个Executor的内存大小不应过小。一般而言,每个Executor的内存大小需要在4GB到8GB之间。可以通过设置以下参数来设置每个Executor的内存大小: spark.executor.memoryD

Hive的行列转换(行转多列、多列转行、行转单列、单列转行)

在实际使用Hive的过程中,常常会涉及到行列转换,细分的话,有下面4种类型的行列转换,分别是:行转多列多列转行行转单列单列转行下面我们通过样例介绍每种行列转换的实现方法。样例表班级成绩表:姓名(name)学科(subject)成绩(score)A 语文 70A 数学 90A 英语 80B 数学 95B 英语 85B 语文 75行列转换思路分析及实现行转多列如果需要将上面的样例表转换为“姓名|语文成绩|数学成绩|英语成绩”这样的格式,那么这就需要用到行转多列。思路:涉及到行转成列,肯定是会按照某一列或者某几列的值进行分组来压缩行数,所以会用到groupby。分组之后需要用到聚合函数,由于多列中的