云服务器内容精选
-
操作步骤 以root用户登录已安装Hive客户端的节点。 执行以下命令,进入客户端安装目录,例如“/opt/client”。 cd /opt/client 执行source bigdata_env命令,配置客户端环境变量。 在客户端中执行如下命令,执行登录操作。 kinit 用户名 执行以下命令登录Hive客户端。 beeline 指定静态分区或者动态分区。 静态分区: 静态分区是手动输入分区名称,在创建表时使用关键字PARTITIONED BY指定分区列名及数据类型。应用开发时,使用ALTER TABLE ADD PARTITION语句增加分区,以及使用LOAD DATA INTO PARTITON语句将数据加载到分区时,只能加载到静态分区。 动态分区:通过查询命令,将结果插入到某个表的分区时,可以使用动态分区。 动态分区通过在客户端工具执行如下命令开启: set hive.exec.dynamic.partition=true; 动态分区默认模式是“strict”,也就是必须至少指定一列为静态分区,在静态分区下建立动态子分区,可以通过如下设置开启完全的动态分区: set hive.exec.dynamic.partition.mode=nonstrict; 动态分区可能导致一个DML语句创建大量的分区,对应创建大量新文件夹,对系统性能可能带来影响。 在文件数量大的情况下,执行一个SQL语句启动时间较长,可以在执行SQL语句之前执行“set mapreduce.input.fileinputformat.list-status.num-threads = 100;”命令缩短启动时间。“mapreduce.input.fileinputformat.list-status.num-threads”参数需要先添加到Hive的白名单才可设置。
-
操作场景 在Hive中执行多表Join时,Hive支持开启CBO(Cost Based Optimization),系统会自动根据表的统计信息,例如数据量、文件数等,选出合适计划提高多表Join的效率。Hive需要先收集表的统计信息后才能使CBO正确的优化。 CBO优化器会基于统计信息和查询条件,尽可能地使join顺序达到合适。但是也可能存在特殊情况导致join顺序调整不准确。例如数据存在倾斜,以及查询条件值在表中不存在等场景,可能调整出非优化的join顺序。 开启列统计信息自动收集时,需要在reduce侧做聚合统计。对于没有reduce阶段的insert任务,将会多出reduce阶段,用于收集统计信息。 本章节适用于 MRS 3.x及后续版本。
-
操作步骤 在Manager界面Hive组件的配置中搜索“hive.cbo.enable”参数,选中“true”永久开启功能。 手动收集Hive表已有数据的统计信息。 执行以下命令,可以手动收集统计信息。仅支持统计一张表,如果需要统计不同的表需重复执行。 ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], ...)] COMPUTE STATIS TICS [FOR COLUMNS] [NOSCAN]; 指定FOR COLUMNS时,收集列级别的统计信息。 指定NOSCAN时,将只统计文件大小和个数,不扫描具体文件。 例如: analyze table table_name compute statistics; analyze table table_name compute statistics for columns; 配置Hive自动收集统计信息。开启配置后,执行insert overwrite/into命令插入数据时才自动统计新数据的信息。 在Hive客户端执行以下命令临时开启收集: set hive.stats.autogather = true;开启表/分区级别的统计信息自动收集。 set hive.stats.column.autogather = true; 开启列级别的统计信息自动收集。 列级别统计信息的收集不支持复杂的数据类型,例如Map,Struct等。 表级别统计信息的自动收集不支持Hive on HBase表。 在Manager界面Hive的服务配置中,搜索参数“hive.stats.autogather”和“hive.stats.column.autogather”,选中“true”永久开启收集功能。 执行以下命令可以查看统计信息。 DESCRIBE FORMATTED table_name[.column_name] PARTITION partition_spec; 例如: desc formatted table_name; desc formatted table_name id; desc formatted table_name partition(time='2016-05-27'); 分区表仅支持分区级别的统计信息收集,因此分区表需要指定分区来查询统计信息。
-
Map Join Hive的Map Join适用于能够在内存中存放下的小表(指表大小小于25MB),通过“hive.mapjoin.smalltable.filesize”定义小表的大小,默认为25MB。 Map Join的方法有两种: 使用/*+ MAPJOIN(join_table) */。 执行语句前设置如下参数,当前版本中该值默认为true。 set hive.auto.convert.join=true; 使用Map Join时没有Reduce任务,而是在Map任务前起了一个MapReduce Local Task,这个Task通过TableScan读取小表内容到本机,在本机以HashTable的形式保存并写入硬盘上传到DFS,并在distributed cache中保存,在Map Task中从本地磁盘或者distributed cache中读取小表内容直接与大表join得到结果并输出。 使用Map Join时需要注意小表不能过大,如果小表将内存基本用尽,会使整个系统性能下降甚至出现内存溢出的异常。
-
Sort Merge Bucket Map Join 使用Sort Merge Bucket Map Join必须满足以下2个条件: join的两张表都很大,内存中无法存放。 两张表都按照join key进行分桶(clustered by (column))和排序(sorted by(column)),且两张表的分桶数正好是倍数关系。 通过如下设置,启用Sort Merge Bucket Map Join: set hive.optimize.bucketmapjoin=true; set hive.optimize.bucketmapjoin.sortedmerge=true; 这种Map Join也没有Reduce任务,是在Map任务前启动MapReduce Local Task,将小表内容按桶读取到本地,在本机保存多个桶的HashTable备份并写入HDFS,并保存在Distributed Cache中,在Map Task中从本地磁盘或者Distributed Cache中按桶一个一个读取小表内容,然后与大表做匹配直接得到结果并输出。
-
注意事项 Join数据倾斜问题 执行任务的时候,任务进度长时间维持在99%,这种现象叫数据倾斜。 数据倾斜是经常存在的,因为有少量的Reduce任务分配到的数据量和其他Reduce差异过大,导致大部分Reduce都已完成任务,但少量Reduce任务还没完成的情况。 解决数据倾斜的问题,可通过设置“set hive.optimize.skewjoin=true”并调整hive.skewjoin.key的大小。hive.skewjoin.key是指Reduce端接收到多少个key即认为数据是倾斜的,并自动分发到多个Reduce。
-
操作步骤 推荐:使用“SNAPPY”压缩,适用于压缩比和读取效率要求均衡场景。 Create table xx (col_name data_type) stored as orc tblproperties ("orc.compress"="SNAPPY"); 可用:使用“ZLIB”压缩,适用于压缩比要求较高场景。 Create table xx (col_name data_type) stored as orc tblproperties ("orc.compress"="ZLIB"); xx为具体使用的Hive表名。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格