华为云用户手册

  • 操作场景 该章节主要介绍如何在HBase Shell命令行查询慢请求或超大请求信息。慢请求是指通过hbase shell命令查询服务端时,RPC请求响应时长超过阈值(即HBase服务端配置参数“hbase.ipc.warn.response.time”,默认值为“3000”ms)的请求;超大请求是指通过hbase shell命令查询服务端时,RPC请求一次返回数据量大小超过阈值(即HBase服务端配置参数“hbase.ipc.warn.response.size”,默认值为“5MB”)的请求。 每个RegionServer节点默认会缓存最近的256条慢请求和超大请求,可以通过FusionInsight Manager中HBase服务端配置参数“hbase.regionserver.slowlog.ringbuffer.size”调整缓存的大小。 该章节内容适用于MRS 3.3.0 及之后版本。
  • 命令说明 该操作主要涉及新增的hbase shell命令如下: get_slowlog_responses:查询慢请求信息。 get_largelog_responses:查询超大请求信息。 clear_slowlog_responses:清理RegionServer缓存中的数据。 可以在hbase shell中执行如下命令查看相关命令如何使用: help 'cmdName' 例如,执行help 'clear_slowlog_responses'查看clear_slowlog_responses命令的使用方法:
  • 操作场景 Hive业务还可能需要关联使用其他组件,例如HQL语句触发MapReduce任务需要设置Yarn权限,或者Hive over HBase的场景需要HBase权限。以下介绍Hive关联Yarn和Hive over HBase两个场景下的操作。 安全模式下Yarn和HBase的权限管理默认是开启的,因此在安全模式下默认需要配置Yarn和HBase权限。 在普通模式下,Yarn和HBase的权限管理默认是关闭的,即任何用户都有权限,因此普通模式下默认不需要配置Yarn和HBase权限。如果用户修改了YARN或者HBase的配置来开启权限管理,则修改后也需要配置Yarn和HBase权限。 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略。
  • Flink作业大小表Join Flink作业双流Join时存在大小表数据,通过内核broadcast策略确保小表数据发送到Join的task中,通过rebalance策略将大表数据打散到Join中,提高Flink SQL易用性,增强作业稳定性。 在使用Flink SQL时,该特性通过hints方法指定Join的左表或右表为广播表,另一张表为rebalance表,SQL语句实例如下,分别以A\C作为小表实例: 以A表作为广播表 使用Join方式 SELECT /*+ BROADCAST(A) */ a2, b2 FROM A JOIN B ON a1 = b1 使用Where方式 SELECT /*+ BROADCAST(A) */ a2, b2 FROM A, B WHERE a1 = b1 以A和C表作为广播表 SELECT /*+ BROADCAST(A, C) */ a2, b2, c2 FROM A JOIN B ON a1 = b1 JOIN C ON a1 = c1 支持通过“/*+ BROADCAST(smallTable1, smallTable2) */”方式使用该特性,兼容开源双流Join逻辑。 不支持开源双流Join和该特性的切换,因为该特性会将数据广播到每个Join算子。 不支持LEFT JOIN时小表为左表,RIGHT JOIN时小表为右表。
  • Flink作业大小表Join去重 在双流关联的业务模型中,关联算子接收到其中一个流发送的大量重复数据,则会导致下游算子需要处理大量重复数据,影响作业性能。 如A表字段(P1,A1,A2)使用如下方式关联B表字段(P1,B1,B2,B3)生成C的场景中,B表信息发生大量更新,但是B中的所需字段没有更新,在该关联中仅用到了B表的B1和B2字段,对于B表,每个记录更新只更新B3字段,B1和B2不更新,因此当B表更新,可以忽略更新后的数据。 select A.A1,B.B1,B.B2 from A join B on A.P1=B.P1 为解决如上问题可通过使用hint单独为左表(duplicate.left)或右表(duplicate.right)设置去重: 格式 为左表设置去重 /*+ OPTIONS('duplicate.left'='true')*/ 为右表设置去重 /*+ OPTIONS('duplicate.right'='true')*/ 同时为左表和右表设置去重 /*+ OPTIONS('duplicate.left'='true','duplicate.right'='true')*/ 在SQL语句中配置 如同时为左表“user_info”和右表“user_score”设置去重。 CREATE TABLE user_info (`user_id` VARCHAR, `user_name` VARCHAR) WITH ( 'connector' = 'kafka', 'topic' = 'user_info_001', 'properties.bootstrap.servers' = '192.168.64.138:21005', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'value.format' = 'csv' ); CREATE table print( `user_id` VARCHAR, `user_name` VARCHAR, `score` INT ) WITH ('connector' = 'print'); CREATE TABLE user_score (user_id VARCHAR, score INT) WITH ( 'connector' = 'kafka', 'topic' = 'user_score_001', 'properties.bootstrap.servers' = '192.168.64.138:21005', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'value.format' = 'csv' ); INSERT INTO print SELECT t.user_id, t.user_name, d.score FROM user_info as t JOIN -- 为左表和右表设置去重 user_score /*+ OPTIONS('duplicate.left'='true','duplicate.right'='true')*/ as d ON t.user_id = d.user_id;
  • 配置描述 查看Yarn服务配置参数 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入表1中参数名称。 表1 参数描述 参数 描述 默认值 yarn.acl.enable Yarn权限控制启用开关。 true yarn.webapp.filter-entity-list-by-user 严格视图启用开关,开启后,登录用户只能查看该用户有权限查看的内容。当要开启该功能时,同时需要设置参数“yarn.acl.enable”为true。 true 查看Mapreduce服务配置参数 参考修改集群服务配置参数进入Mapreduce服务参数“全部配置”界面,在搜索框中输入表2中参数名称。 表2 参数描述 参数 描述 默认值 mapreduce.cluster.acls.enabled MR JobHistoryServer权限控制启用开关。该参数为客户端参数,当JobHistoryServer服务端开启权限控制之后该参数生效。 true yarn.webapp.filter-entity-list-by-user MR JobHistoryServer严格视图启用开关,开启后,登录用户只能查看该用户有权限查看的内容。该参数为JobHistoryServer的服务端参数,表示JHS开启了权限控制,但是否要对某一个特定的Application进行控制,是由客户端参数:“mapreduce.cluster.acls.enabled”决定。 true 以上配置会影响restful API和shell命令结果,即以上配置开启后,restful API调用和shell命令运行所返回的内容只包含调用用户有权查看的信息。 当yarn.acl.enable或mapreduce.cluster.acls.enabled设置为false时,即关闭Yarn或Mapreduce的权限校验功能。此时任何用户都可以在Yarn或MapReduce上提交任务和查看任务信息,存在安全风险,请谨慎使用。
  • 参数说明 表1 Loader常用参数 配置参数 说明 默认值 范围 mapreduce.client.submit.file.replication MapReduce任务在运行时依赖的相关job文件在HDFS上的副本数。当集群中DataNode个数小于该参数值时,副本数等于DataNode的个数。当DataNode个数大于或等于该参数值,副本数为该参数值。 10 3~256 loader.fault.tolerance.rate 容错率。 值大于0时使能容错机制。使能容错机制时建议将作业的Map数设置为大于等于3,推荐在作业数据量大的场景下使用。 0 0~1.0 loader.input.field.separator 默认的输入字段分割符,需要配置输入与输出转换步骤才生效,转换步骤的内容可以为空;如果作业的转换步骤中没有配置分割符,则以此处的默认分割符为准。 , - loader.input.line.separator 默认的输入行分割符,需要配置输入与输出转换步骤才生效,转换步骤的内容可以为空;如果作业的转换步骤中没有配置分割符,则以此处的默认分割符为准。 - - loader.output.field.separator 默认的输出字段分割符,需要配置输入与输出转换步骤才生效,转换步骤的内容可以为空;如果作业的转换步骤中没有配置分割符,则以此处的默认分割符为准。 , - loader.output.line.separator Loader输出数据的行分隔符。 - - 由于容错率的统计需要时间,为保证使用效果,建议在作业运行时间在2分钟以上时使用“loader.fault.tolerance.rate”参数。 此处参数设置的为Loader全局的默认分割符,如果作业的转换步骤中配置了分割符,则以转换步骤为准,转换步骤中没有配置分割符则以此处的默认分割符为准。
  • 前提条件 已安装Oozie、ZooKeeper服务,且服务正常运行。 没有任务正在运行。 如果当前集群不是安装最新的版本包,需要从“$BIGDATA_HOME/FusionInsight_Porter_x.x.x/install/FusionInsight-Oozie-x.x.x/oozie-x.x.x/embedded-oozie-server/webapp/WEB-INF/lib”路径复制“curator-x-discovery-x.x.x.jar”包到“$BIGDATA_HOME/FusionInsight_Porter_x.x.x/install/FusionInsight-Oozie-x.x.x/oozie-x.x.x/lib”目录下。
  • 日志级别 Flink中提供了如表3所示的日志级别。日志级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表3 日志级别 级别 描述 ERROR ERROR表示当前时间处理存在错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 请参考修改集群服务配置参数,进入Flink的“全部配置”页面。 左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 保存配置,在弹出窗口中单击“确定”使配置生效。 配置完成后不需要重启服务,重新下载客户端使配置生效。 也可以直接修改客户端“客户端安装目录/Flink/flink/conf/”中log4j-cli.properties、log4j.properties、log4j-session.properties文件中对应的日志级别配置项。 通过客户端提交作业时会在客户端log文件夹中生成相应日志文件,由于系统默认umask值是0022,所以日志默认权限为644;如果需要修改文件权限,需要修改umask值;例如修改omm用户umask值: 在“/home/omm/.baskrc”文件末尾添加“umask 0026”; 执行命令source /home/omm/.baskrc使文件权限生效。
  • 配置场景 Spark SQL Adaptive Execution特性用于使Spark SQL在运行过程中,根据中间结果优化后续执行流程,提高整体执行效率。当前已实现的特性如下: 自动设置shuffle partition数 在启用Adaptive Execution特性前,Spark SQL根据spark.sql.shuffle.partitions配置指定shuffle时的partition个数。此种方法在一个应用中执行多种SQL查询时缺乏灵活性,无法保证所有场景下的性能更优。开启Adaptive Execution后,Spark SQL将自动为每个shuffle过程动态设置partition个数,而不是使用通用配置,使每次shuffle过程自动使用最合理的partition数。 动态调整执行计划 在启用Adaptive Execution特性前,Spark SQL根据RBO和CBO的优化结果创建执行计划,此种方法忽略了数据在运行过程中的结果集变化。比如基于某个大表创建的视图,与其他大表join时,即便视图的结果集很小,也无法将执行计划调整为BroadcastJoin。启用Adaptive Execution特性后,Spark SQL能够在运行过程中根据前面stage的运行结果动态调整后续的执行计划,从而获得更好的执行性能。 自动处理数据倾斜 在执行SQL语句时,如果存在数据倾斜,可能导致单个executor内存溢出、任务执行缓慢等问题。启动Adaptive Execution特性后,Spark SQL能自动处理数据倾斜场景,对倾斜的分区,启动多个task进行处理,每个task读取部分shuffle输出文件,再对这部分任务的Join结果进行Union操作,以达到消除数据倾斜的效果
  • 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。
  • 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时需要注意小表不能过大,如果小表将内存基本用尽,会使整个系统性能下降甚至出现内存溢出的异常。
  • 操作步骤 以root用户登录待安装MySQL客户端的节点。 执行以下命令查看MySQL客户端依赖库ncurses-libs的版本: rpm -qa | grep ncurses 从https://downloads.mysql.com/archives/community/下载MySQL客户端对应的软件包,建议安装8.x 版本,以RedHat发行版本为例: 如果2的依赖库是6.x建议下载对应OS Version为RedHat8的MySQL软件包。 如果2的依赖库是5.x建议下载对应OS Version为RedHat7的MySQL软件包。 例如,如果需安装RedHat的MySQL 8.0.22客户端需下载如下四个软件包: 将下载的软件包上传到待安装MySQL客户端的节点上。 在上传的文件所在目录执行以下命令,安装MySQL客户端及对应的依赖包。 rpm -ivh mysql-community-client-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-client-plugins-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-common-8.0.22-1.el8.x86_64.rpm --nodeps --force rpm -ivh mysql-community-libs-8.0.22-1.el8.x86_64.rpm --nodeps --force 执行以下命令查看MySQL客户端的版本: mysql --version MySQL客户端安装成功后,即可访问Doris,详细操作请参见快速使用Doris。
  • Bitwise函数 bit_count(x, bits) → bigint 计算2的补码表示法中x中设置的位数(视为有符号位的整数)。 SELECT bit_count(9, 64); -- 2 SELECT bit_count(9, 8); -- 2 SELECT bit_count(-7, 64); -- 62 SELECT bit_count(-7, 8); -- 6 bitwise_and(x, y) → bigint 以二进制补码形式返回x和y按位与的结果。 select bitwise_and(8, 7); -- 0 bitwise_not(x) → bigint 以二进制补码形式返回x按位非的结果。 select bitwise_not(8);-- -9 bitwise_or(x, y) → bigint 以二进制补码形式返回x和y按位或的结果。 select bitwise_or(8,7);-- 15 bitwise_xor(x, y) → bigint 以二进制补码形式返回x和y按位异或的结果。 SELECT bitwise_xor(19,25); -- 10 bitwise_left_shift(value, shift) → [same as value] 描述:返回value左移shift位后的值。 SELECT bitwise_left_shift(1, 2); -- 4 SELECT bitwise_left_shift(5, 2); -- 20 SELECT bitwise_left_shift(0, 1); -- 0 SELECT bitwise_left_shift(20, 0); -- 20 bitwise_right_shift(value, shift) → [same as value] 描述:返回value右移shift位后的值。 SELECT bitwise_right_shift(8, 3); -- 1 SELECT bitwise_right_shift(9, 1); -- 4 SELECT bitwise_right_shift(20, 0); -- 20 SELECT bitwise_right_shift(0, 1); -- 0 -- 右移超过64位,返回0 SELECT bitwise_right_shift( 12, 64); -- 0 bitwise_right_shift_arithmetic(value, shift) → [same as value] 描述:返回value的算术右移值,当shift小于64位时,返回结果与bitwise_right_shift一样,当移动位数达到或者超过64位时,value是正数时返回0,负数时返回-1: SELECT bitwise_right_shift_arithmetic( 12, 64); -- 0 SELECT bitwise_right_shift_arithmetic(-45, 64); -- -1 父主题: HetuEngine SQL函数和操作符说明
  • Loader宏定义 目前Loader默认支持以下时间宏定义: 表1 Loader常用宏定义 名称 替换后效果 说明 @{dateformat("yyyy-MM-dd")}@ 2016-05-17 当前日期。 @{dateformat("yyyy-MM-dd HH:mm:ss")}@ 2016-05-17 16:50:00 当前日期和时间。 @{timestamp()}@ 1463476137557 从1970年到现在的毫秒数。 @{dateformat("yyyy-MM-dd HH:mm:ss",-7,DAYS)}@ 2016-05-10 16:50:00 最近7天,即当前时间减7天。 第二个参数支持加减运算。 第三个参数为时间运算的单位,参考“java.util.concurrent.TimeUnit.java”定义,分为DAYS、HOURS 、MINUTES、SECONDS。 在以下场景中,可以使用宏进行配置参数: 指定以当天时间命名的数据目录 参数项配置为“/user/data/inputdate_@{dateformat("yyyy-MM-dd")}@”。 通过SQL语句查询最近7天的数据 select * from table where time between '@{dateformat("yyyy-MM-dd HH:mm:ss",-7,DAYS)}@' and '@{dateformat("yyyy-MM-dd HH:mm:ss")}@' 指定当天的表名 参数项配置为“table_@{dateformat("yyyy-MM-dd")}@”。
  • 操作场景 安全模式的集群,在使用HetuEngine服务前,需集群管理员创建用户并指定其操作权限以满足业务使用需求。 HetuEngine用户分为管理员用户和普通用户,系统默认的HetuEngine管理员用户组为“hetuadmin”,HetuEngine普通用户对应用户组为“hetuuser”。 关联了“hetuadmin”用户组的用户可获得HetuEngine的HSConsole WebUI界面和HetuEngine计算实例WebUI的运维管理员权限。 关联了“hetuuser”用户组的用户可获得SQL执行权限。可以访问HSConsole WebUI界面,查看当前用户关联租户的集群信息以及所有数据源的基本信息,可以访问计算实例的WebUI界面,并对当前用户的SQL有查询和运维的权限。 启用了Ranger鉴权时,如果用户创建后需要继续为用户配置操作数据源的数据库、表、列的管理权限,请参考添加HetuEngine的Ranger访问权限策略。
  • Color 函数 bar(x, width) 描述:使用默认的低频红色和高频绿色渲染ANSI条形图中的单个条形。例如,如果将25%的x和40的宽度传递给此函数。将绘制一个10个字符的红色条形,后跟30个空格,以创建一个40个字符的条形。 bar(x, width, low_color, high_color) 描述:在ANSI条形图中以指定宽度绘制一条直线。参数x是0到1之间的一个双精度值。x的值超出[0,1]范围将被截断为0或1值。low_color和high_color捕获用于水平条形图任一端的颜色。例如,如果x为0.5,宽度为80,low_color为0xFF0000,high_color为0x00FF00,则此函数将返回一个40个字符的条形,该条形由红色(0xFF0000)和黄色(0xFFFF00)组成,其余80个字符条为用空格填充。 select bar(0.75,80,rgb(255,0,0),rgb(0,255,0)); render(b) 描述:根据布尔值返回对错符号。 select render(true),render(false); 父主题: HetuEngine SQL函数和操作符说明
  • 逻辑运算符 逻辑运算符 操作 描述 例子 AND 两个值都为true,则为true a AND b OR 两个值其中一个为true,则为true a OR b NOT 值为false,结果则为true NOT a 以下真值表反映了AND和OR如何处理NULL值: a b a AND b a OR b TRUE TRUE TRUE TRUE TRUE FALSE FALSE TRUE TRUE NULL NULL TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE NULL FALSE NULL NULL TRUE NULL TRUE NULL FALSE FALSE NULL NULL NULL NULL NULL 以下真值表反映了NOT如何处理NULL值: value NOT value TRUE FALSE FALSE TRUE NULL NULL 父主题: HetuEngine SQL函数和操作符说明
  • 配置场景 当前版本对于parquet表的压缩格式分以下两种情况进行配置: 对于分区表,需要通过parquet本身的配置项“parquet.compression”设置parquet表的数据压缩格式。如在建表语句中设置tblproperties:"parquet.compression"="snappy"。 对于非分区表,需要通过“spark.sql.parquet.compression.codec”配置项来设置parquet类型的数据压缩格式。直接设置“parquet.compression”配置项是无效的,因为它会读取“spark.sql.parquet.compression.codec”配置项的值。当“spark.sql.parquet.compression.codec”未做设置时默认值为“snappy”,“parquet.compression”会读取该默认值。 因此,“spark.sql.parquet.compression.codec”配置项只适用于设置非分区表的parquet压缩格式。
  • 前提条件 Doris服务运行正常。 角色名称不能为operator和admin。 集群已启用Kerberos认证(安全模式)时,Doris赋权成功后,权限生效时间大约为2分钟。 仅MRS 3.3.0及之后版本的集群支持通过FusionInsight Manager创建角色进行赋权,如果集群为MRS 3.3.0之前的版本,无论是否开启Kerberos认证,都需要通过root用户(默认密码为空)来连接数据库。
  • 操作场景 默认情况下,如果一个MR任务会产生大量的输出结果文件,那么该job在最后的commit阶段会耗费较长的时间将每个task的临时输出结果commit到最终的结果输出目录。特别是在大集群中,大Job的commit过程会严重影响任务的性能表现。 针对以上情况,可以通过将以下参数“mapreduce.fileoutputcommitter.algorithm.version”配置为“2”,来提升MR Job commit阶段的性能。
  • 操作步骤 参数入口: 进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。具体操作请参考修改集群服务配置参数章节。 表1 参数说明 参数 描述 默认值 mapreduce.fileoutputcommitter.algorithm.version 用于指定Job的最终输出文件提交的算法版本,取值为“1”或“2”。 说明: 版本2为建议的优化算法版本。该算法通过让任务直接将每个task的输出结果提交到最终的结果输出目录,从而减少大作业的输出提交时间。 2
  • 示例 非事务表场景: 清空表数据 --创建表并插入数据 create table tb_del as select * from (values(1,'suse'),(2,'centos'),(3,'euler')) as t (id,os); select * from tb_del; id | os ----|-------- 1 | suse 2 | centos 3 | euler (3 rows) --不支持通过where子句删除单条数据 delete from tb_del where id =1; Query 20201116_081955_00027_iyct5@default@HetuEngine failed: This connector only supports delete where one or more partitions are deleted entirely for Non-Transactional tables --清空表数据 delete from tb_del; select * from tb_del; id | os ----|---- (0 rows) 删除分区表hive.web.page_views中partition(date='2020-07-17', country='US')的分区: delete from hive.web.page_views where ds=date '2020-07-17' and country='US'; 事务表场景:删除指定记录 --创建事务表 create table tb_trans(a int,b string) with (transactional=true); CREATE TABLE --插入数据 insert into tb_trans values(1,'a'),(2,'b'),(3,'c'); INSERT: 3 rows --删除数据 delete from tb_trans where a=1; DELETE: 1 row
  • 操作场景 用户需要使用图形化界面在集群中创建或查询HBase表时,可以通过Hue完成任务。 如需在Hue WebUI中操作HBase,当前MRS集群中必须部署HBase的Thrift1Server实例。 Thrift1Server实例默认不会安装,用户可在创建自定义类型的MRS集群时,选择HBase组件并通过调整集群自定义拓扑,添加Thrift1Server实例,详情请参考购买自定义拓扑集群。 如果当前集群支持手动添加服务,也可以在首次添加HBase服务时,选择部署Thrift1Server实例,服务添加成功后,需重启Hue服务,详情请参考添加服务。
  • 示例 创建示例所需视图: Create schema test1; Use test1; Create table t1(id int, name string); Create view v1 as select * from t1; Create view v2 as select * from t1; Create view t1view as select * from t1; Create view t2view as select * from t1; Show views; Table -------- t1view t2view v1 v2 (4 rows) Show views like 'v1'; Table ------- v1 (1 row) Show views 'v_'; Table ------- v1 v2 (2 rows) show views like 't*'; Table -------- t1view t2view Show views in test1; Table -------- t1view t2view v1 v2 (4 rows)
  • 示例 --PREPARE my_select1 FROM SELECT * FROM fruit; DESCRIBE OUTPUT my_select1; --PREPARE my_select2 FROM SELECT count(*) as my_count, 1+2 FROM fruit; DESCRIBE OUTPUT my_select2; --PREPARE my_create FROM CREATE TABLE foo AS SELECT * FROM fruit; DESCRIBE OUTPUT my_create;
  • 示例 --创建测试表 Create table show_table1(a int); Create table show_table2(a int); Create table showtable5(a int); Create table intable(a int); Create table fromtable(a int); --匹配单字符'_' show tables in default like 'show_table_'; Table ------------- show_table1 show_table2 (2 rows) --匹配多字符'*','%' show tables in default like 'show%'; Table ------------- show_table1 show_table2 showtable5 (3 rows) show tables in default like 'show*'; Table ------------- show_table1 show_table2 showtable5 (3 rows) --转义字符使用,第二个示例将'_'作为过滤条件,结果集不包含showtable5 show tables in default like 'show_%'; Table ------------- show_table1 show_table2 showtable5 (3 rows) show tables in default like 'show$_%' ESCAPE '$'; Table ------------- show_table1 show_table2 (2 rows) --同时满足多个条件,查询default中'show_'开头或者'in'开头的表 show tables in default like 'show$_%|in%' ESCAPE '$'; Table ------------- intable show_table1 show_table2 (3 rows)
  • 回答 由于断电,当写操作完成之后,缓存中的block不会立即被写入磁盘,如果要同步地将缓存的block写入磁盘,用户需要将“客户端安装路径/HDFS/hadoop/etc/hadoop/hdfs-site.xml”中的“dfs.datanode.synconclose”设置为“true”。 默认情况下,“dfs.datanode.synconclose”为“false”,虽然性能很高,但是断电之后,存储在缓存中的数据会丢失。将“dfs.datanode.synconclose”设置为“true”,可以解决此问题,但对性能有很大影响。请根据具体的应用场景决定是否开启该参数。
  • 提取函数 描述:提取函数用于从HTTP URL(或任何符合RFC 2396标准的URL)中提取内容。 [protocol:][//host[:port]][path][?query][#fragment] 提取的内容不会包含URI的语法分割符,比如“:”或“?”。 url_extract_fragment(url) → varchar 描述:返回url的片段标识符,即#后面的字符串。 select url_extract_fragment('http://www.example.com:80/stu/index.html?name=xxx&age=25#teacher');--teacher url_extract_host(url)→ varchar 描述:返回url中的主机域名。 select url_extract_host('http://www.example.com:80/stu/index.html?name=xxx&age=25#teacher');-- www.example.com url_extract_parameter(url, name)→ varchar 描述:返回url中参数名为name的参数。 select url_extract_parameter('http://www.example.com:80/stu/index.html?name=xxx&age=25#teacher','age');-- 25 url_extract_path(url)→ varchar 描述:提取url中的路径。 select url_extract_path('http://www.example.com:80/stu/index.html?name=xxx&age=25#teacher');-- /stu/index.html url_extract_port(url)→ bigint 描述:提取url中的端口。 select url_extract_port('http://www.example.com:80/stu/index.html?name=xxx&age=25#teacher');-- 80 url_extract_protocol(url)→ varchar 描述:提取url中的协议。 select url_extract_protocol('http://www.example.com:80/stu/index.html?name=xxx&age=25#teacher'); -- http url_extract_query(url)→ varchar 描述:提取url中的查询字符串。 select url_extract_query('http://www.example.com:80/stu/index.html?name=xxx&age=25#teacher'); -- name=xxx&age=25
共100000条