大数据侠客
这个作者很懒,什么都没留下…
展开
-
Hive矢量化
而且Hive 目前严重依赖比较慢的反序列化方式,数据会通过一层对象检查器,用来标识列类型、反序列化数据并在内部循环中确定适当的(计算)表达式。所以 Hive 添加了矢量化查询、执行的支持,这样在 Hive 中就能一次处理大约一千行的批次(默认),而不是一行。执行的内部循环的时候能非常快速地扫描这些向量,避免了方法调用、反序列化、不必要的 if-then-else 等,这大大减少了CPU的使用时间。使用 AND、OR、NOT、<、>、<=、>=、=、=、!算术: +, -, *, /, %原创 2024-03-28 17:15:12 · 153 阅读 · 0 评论 -
Hive面试题汇总
Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。当按照类型进行group by的时候,会将相同的group by字段的reduce任务需要的数据拉取到同一个节点进行聚合,而当其中每一组的数据量过大时,会出现其他组的计算已经完成而这个reduce还没有计算完成,其他的节点一直等待这个节点的任务执行完成,所以会一直看到map 100% reduce99%的情况;原创 2024-03-08 11:37:11 · 585 阅读 · 0 评论 -
谨慎修改ORC文件
一、背景由于历史原因, 有些表并未使用 ORC 格式,而是直接才用了 TextFile 格式, 随着业务的迭代, 表越变越大,导致存储资源十分紧张。为了节省存储空间,经过调研,我们决定采用 ORC 格式,大概可以节省 75% 的存储空间, 对于 PB 级别的数据, 是十分可观的。在做完 ORC 格式后,我们又对这些表进行拉链操作。拉链的过程,遇到一个十分怪异的错误。不管使用 Hive 还是 Spark 都会抛出异常,导致 SQL 失败。Spark 报错:Most recent failure:原创 2024-03-07 10:26:56 · 123 阅读 · 0 评论 -
Hive 表修改列名后内容为空的解决办法
备注:解决办法不使用于所有 hive 版本。hive-3.1.3 支持。原创 2024-03-05 10:37:01 · 287 阅读 · 0 评论 -
同步数据Hive到ES-支持复杂类型
注:为避免后续报错,需要另一个jar包-commons-httpclient-3.1.jar,并上传到hdfs目录下:/user/hive/warehouse/es_hadoop。‘es.batch.size.entries’=‘10000’ ----每批次条数设置。‘es.batch.size.bytes’=‘10mb’ --批次大小设置。‘es.write.operation’=‘upsert’ --更新插入。.jar(根据自身es版本下载)第四步:ES查看数据。原创 2024-03-05 10:29:34 · 99 阅读 · 0 评论 -
Hive中定义的复杂数据类型导入到es中问题总结
避免踩坑:提前把jar包hive home路径下lib中commons-httpclient-3.1.jar也上传到hive中。如果是更新插入:需要加此配置,第一次插入数据不需要加入该配置。在输入框中输入es-hadoop,在version版本处找到和你es相同的版本即可。>,将如下数据导入到ES中。原创 2024-03-05 10:21:31 · 167 阅读 · 0 评论 -
Hive数据分区时分区字段不可为中文
问题原因:hive配置文件内,没有识别中文的编码集,需手动修改配置文件。原创 2024-03-05 10:15:47 · 206 阅读 · 0 评论 -
Hive MR & Spark & Yarn参数优化总结
缺点:开启JVM重用将一直占用使用到的task插槽,以便进行重用,直到任务完成后才能释放。如果某个“不平衡的”job中有某几个reduce task执行的时间要比其他Reduce task消耗的时间多的多的话,那么保留的插槽就会一直空闲着却无法被其他的job使用,直到所有的task都结束了才会释放。这就需要推测执行,hadoop的推测执行机制会给这些有可能需要长时间才可以执行完的task准备一个备份,一旦task执行缓慢,那么备份task也会执行task的工作,看哪个先执行完就使用哪个的结果。原创 2024-03-05 10:10:00 · 205 阅读 · 0 评论 -
Hive中经纬度-地理坐标导入ES中,地理坐标不可用
ES中取坐标数据,需要是一个json对象:{ “lat”: 12.34, “lon”: 56.78 } ,所以需要在hive中构造一个json对象。:hive中新建映射表:es_mapping.app_enterprise_business_tags_es1222。:使用es-hadoop组件同步数据,将导入进去的location数据,进行更新。:将hive字段数组类型,转化为map类型,插入到新建映射表中。原创 2024-03-04 16:57:05 · 177 阅读 · 0 评论 -
hdfs开启高可用之后HIVE报错
有namenode有两个节点master01和master03 ,之前是master01为活跃状态,后来将master03加入到高可用,master03切换到alive状态。但是发现启用hive的时候报错。发现还是找master01的元数据信息,因为master01处于standby状态。没有办法完成hdfs自动切换,尤其是hive。根本的解决办法是将所有指向原hdfs地址的ip修改为HA后的新hdfs组ID才可以。原创 2024-02-29 10:40:36 · 155 阅读 · 0 评论 -
FLINK SQL同步数据Hive到mongo,mongo到hive-支持复杂类型
在192.168.***节点:cd /opt/cloudera/parcels/FLINK-1.17.1-BIN-SCALA_2.12/lib/flink/bin。原创 2024-02-29 10:37:12 · 109 阅读 · 0 评论 -
Hive3 left join 数据缺失问题
如果依然开启mapjoin将smalltable.filesize与 noconditionaltask.size调到等大和足够大。hive3默认建表bucketing_version为2,通过上述sql可以查询出hive2建的表,没有bucketing_version,将这些表进行重建并重新导数据.关闭mapjoin 设置参数: set hive.auto.convert.join=false;上述sql使用tez引擎left join 出t2表数据为空。hive默认开启了mapjoin,两种解决方式。原创 2024-02-29 10:19:06 · 394 阅读 · 0 评论 -
Flink集成hive
将上面的三个jar包添加至Flink的lib目录下之后,就可以使用Flink操作Hive的数据表了。执行命令:./sql-client.sh embedded -i …/conf/sql-conf.sql。查询报错: select * from dw.app_exhibition limit 10;其中hive-exec-2.3.4.jar包存在于Hive安装路径下的lib文件夹。再次启动sql客户端即可执行成功。原创 2024-02-28 15:29:45 · 626 阅读 · 0 评论 -
使用Spark或MR 引擎总计 由Tez引擎所运行插入的表数据 查询统计数据为 0
用户反馈相同一条SQL tez查询有结果,但是使用spark-sql查询没有结果,经过分析发现这个表下的分区有子目录如下,多了一层HIVE_UNION_SUBDIR_1目录。多这个目录的原因是tez引擎使用union all时会生成一个子目录HIVE_UNION_SUBDIR_1,HIVE_UNION_SUBDIR_2。问题描述:使用Spark或MR 引擎总计 由Tez引擎所运行插入的表数据 查询统计数据为 0。一、源头不用tez引擎,换成hive或者spark-sql。2、spark-sql增加参数。原创 2024-02-28 15:17:58 · 131 阅读 · 0 评论