华为云用户手册

  • NLP词库 通过维护敏感词库和敏感词白名单,对NLP敏感词库进行补充,维护好的词库,全局评分表中的评分规则进行选用。 图30 NLP敏感词库 敏感词库,用于维护敏感词,关联到全局评分表后,对练中如检出敏感词则进行扣分; 白名单库,即对练中被敏感词模型误召回的词语,添加为白名单后,不再被识别为敏感词; 图31 敏感词 意图库:支持分组管理意图,支持意图的增、删、改、查,支持导入导出。例如按照学员或者客户的意图 图32 客户的意图 意图库应用:在对话任务中的对练节点,进行机器人话术和学员话术编辑时,可选用意图库中的意图作为话术; 图33 意图库应用 图34 选用意图
  • 教学首页 教学首页可以自定义常用功能、查看数据看板、资源总览、任务总览、趋势总览、学生排行5个方面的整个租户内容的统计数据。方便导师或系统管理员快速查看系统的数据情况。 图1 数据看板 图2 资源总览 图3 趋势总览 登录账号有教学端和学员端两种权限,那么在主界面的右上角就有【进入学员端】按钮,单击后即可进入学员端。 图4 进入学员端 单击右上角账号名称处,可以修改账号的登录密码,并且可以退出登录。 图5 退出登录
  • 智能陪练 在智能陪练目录分为3个板块:【机器人平台】、【机器人运营】、【通用设置】;机器人平台 机器人平台:板块内涉及智能陪练的内容、模拟客户、全局评分表等配置项功能,导师可以通过一系列配置,将业务知识、业务流程等业务话术教学资源录入和沉淀,作为底层教学资源供其他导师在其它教学场景随时调用,是导师给学员分配陪练任务中需要学员对练的内容也是分发陪练任务的前提条件; 陪练机器人 用户可以创建多个陪练机器人,对企业来说可以将不同场景或者业务的话术资源进行分类,每个企业可以创建陪练机器人的数量有上限,剩余可创建数量在右上角页面显示。机器人支持导入导出,但导出后机器人不可以被编辑,否则可能导致导入机器人失败。单击回收站即可打开弹窗查看已删除的机器人。 陪练机器人是智能陪练的核心;问答知识、对话任务和剧本是陪练机器人的核心。三者关系是剧本要引用问答知识和对话任务配置的内容。 第一步导师需要在问答知识和对话任务中进行对练内容配置;一个陪练机器人可配置多个对话任务和问答知识。 问答知识:也就是FAQ,一个问答知识可以设置一个标准问、一个标准答案、多个相似问和评分规则;机器人可通过提出标准问或者相似问对学员提问,并依据评分规则对学员的回答进行评分。问答知识支持Excel模板导入。 对话任务:也就是完整的场景类模拟对话。对话流程在画布中配置多个对话节点并连线实现;每个对话节点包含一句机器人(客户)话术、一句学员标准话术和节点评分规则;对话任务支持Excel模板导入; 第二步剧本创建,导师需要创建流程剧本和问答剧本,为后续创建话术对练学习任务与话术对练考试任务中进行选用。一个陪练机器人可配置多个流程剧本和问答剧本。 一个对话任务对应一个流程剧本,一个问答剧本可以包含多个问答知识。 机器人信息:该页面可进行机器人信息的编辑和机器人所属行业划分。 Figure6 机器人信息 问答知识:进入新建知识页面后可进行归属分类、标准问法、标准回复等设定,设定该问答知识的分值,最后对该问答知识的扣分规则进行设定。单击+编辑规则进入添加条件组可对该问答知识进行分数规则设定。 图7 问答知识 图8 新建问答知识 图9 编辑问答知识 对话任务: 单击对话任务可跳转至对话任务界面,单击新建任务进入一个新的流程画布页面,或者已有对话任务进行配置与编辑,单击编辑进入界面; 图10 对话任务 进入该界面,画面所展示的为一个子流程,如:开始节点、验证身份,卡号、验证身份,密码等等为一个子流程。一个完整的子流程需包含跳转节点与对练节点。 图11 子流程 通常情况下每个对练节点的组成为一问一答,多个一问一答的模式可组成一个完整的剧本,即一个子流程。跳转节点通常即为流程结束时跳出流程使用 图12 一问一答 单击‘对练节点’并将其拖动至灰色画布页面处即可新增一个对练节点 图13 对练节点 单击开始节点的【默认】并拖动至对练节点处即可将两个节点相互连接,连线代表流程顺序,由开始节点进入对练节点再进入到下一个对练节点,即有一个问题循序渐进的问到下一个问题 图14 开始节点 每个对练节点都由一句机器人话术,一句学员标准话术以及学员话术的得分规则组成; 图15 机器人话术 单击“编辑规则”可展开分数规则配置页面,支持关键词(词语和正则)、相识度、违规者的配置,并支持不同关键词之间不同的逻辑关系配置; 图16 编辑规则 对练节点的内容也可以从问答知识里进行进行筛选,筛选后再编辑规则。 图17 筛选后再编辑规则 图18 询问其他问题 对练节点中,机器人话术支持自动生成相似问。单击【推荐相似问法】,机器人可生成多个相似问。相似问需要选择后进行添加; 在设置一个或多个对练节点后,需要跳出整个对话流程,需要对机器人配置一个跳转节点,以此结束机器人的对话流程。 图19 推荐相似问法 最终进行保存草稿并进行校验发布即可,即配置了一个完整的对话流程,学员可以通过这个流程进行一个对话流程的训练。 图20 进行校验发布 剧本:机器人中的每个对话任务可被新建为一个流程剧本,每个机器人包含的问答知识可被设定为问答剧本。流程剧本与问答剧本用于导师进行陪练学习任务的创建,导师推送任务后将学员端将会生成话术对练任务。 图21 全剧剧本 新建流程剧本时,选择对应的对话任务进行流程剧本的新建。其关联客户的设定依赖于【模拟客户库】中的所设定的模拟客户,评分标签依赖于【通用设置】中所设定的评分标签。新建完成后即可形成流程剧本资源。 图22 新建流程剧本1 图23 新建流程剧本2 词库管理:关键词、违规词、实体词和NLP词库的增、删、改、查功能。
  • 方案架构 业务架构图 图1 业务架构图 方案主要由 华为云计算 底座、AI智能及云客服产品形成面向客户联络行业的全场景解决方案。它能够通过自然语言处理、 语音识别 等技术,实现与客户之间的智能交互,提供高效、便捷的服务支持。 自动化程度高‌:智能客服系统能够24小时不间断地为客户提供服务,无需人工干预即可处理大量常见问题,大大提高了客户服务的效率。 智能识别与回应‌:借助自然语言处理技术,智能客服能够准确识别客户的问题,并给出相应的回答和建议,实现与客户的智能交互。 学习能力强大‌:基于机器学习算法,智能客服能够不断学习和优化,提高回答问题的准确性和效率,从而更好地满足客户需求。 数据分析能力突出‌:通过大数据分析,智能客服能够洞察客户需求,为企业提供有价值的市场信息和商业智能,助力企业决策。‌ 部署架构图 图2 部署架构图 方案通过使用了以下云服务: 通过云数据库RDS for Mysql主备实例实现业务数据的存储与备份; 通过分布式缓存服务Redis实现用户会话信息快速读取; 通过华为云的 CSS 组件提供基于Elasticsearch的 云搜索服务 ; 通过CCE容器部署算法系统,简化部署流程,并缩短时长,平台部署周期缩短50%以上。
  • 方案优势 金融级安全加密&自主可控:支持RDS、D CS 在X86和ARM两种不同架构的资源上进行部署;采用虚拟号外呼、平台加解密、加密透传、AXB中间号外呼等多类型加密方式,保障客户数据的安全和隐私,符合金融行业等对数据安全的严格要求。 降本增效&提升客户体验:智能客服能够减少人工客服的工作量,降低企业的人力成本; 可同时处理多个客户的问题,大大缩短了客户等待时间,提高了服务效率;并且能够准确识别客户需求,提供个性化的服务建议,提升客户满意度和忠诚度。 助力企业决策‌:智能客服系统通过大数据分析,能够洞察客户需求和市场趋势,为企业制定战略决策提供有力支持。 智能语音识别准确率高:SIS采用最新一代语音识别技术,基于深度神经网络(Deep Neural Networks,简称DNN)技术,大大提高了抗噪性能,使识别准确率显著提升。
  • 应用场景 客户痛点: 人工服务效率低下、人员成本高昂。劳动力成本快速上涨、客服人员流动大、培训成本高 人工客服个体差异,质量参差不齐,效果难以把握 人力难以覆盖到所有时间的客户咨询,难以在复杂海量信息中给出迅速响应回复 传统人工操作数据处理环节多、留存量低、服务数据分散不易管理 接入渠道相对封闭,并且随着接入渠道的增加,业务量增加,人工管理难度大 知识维护成本高,难以穷举问题表达,需要不断完善新问题和相似问题 咨询过程体验差,解决问题效率太低,需要客户更准确的表达问题 通过本方案实现的业务效果: 智能化服务转型:将AI赋能企业服务,成为企业营销重要的一环,与整体市场营销、品牌形成合力,进行数字化、智能化服务转型 全流程提升客户体验:覆盖售前/售后全流程,多场景无缝融合,为客户提供全生命周期的智能化服务,准确赋能企业运营各环节 个性化服务提升解决效率:根据客户属性、预判客户意图实现个性化服务,快速高效的解决客户问题,达到千人千面的服务策略 降本增效:低学习成本、低配置成本、低运营成本,快速上手、可自主配置维护,自操作度高,以最低人工成本实现先进的机器人拦截效果和服务体验 最终客户满意度提升:从准确的答案匹配回复,再到贴心的拟人化服务,情绪识别,及时安抚,实现对客户全方位服务的闭环,全面提升客户满意度
  • 对话标签 对话标签是以通话为维度,在通话结束后,根据配置规则给该通会话自动打的意向结论标签(一通会话一个,类似通话小结)。 标签值可以根据业务实际情况自定义,标签名称长度在 1 到 50 个字符,支持新增、删除,删除会自动校验是否被问答知识、流程节点、转人工规则、对话标签规则引用,被引用不支持删除。支持配置标签优先级:非必填,文本框仅支持输入1-100的整数,1的优先级最高,数字越大优先级低;填写后会话中如有多个标签,将以优先级高的为准,在优先级一致的情况下以最后一个标签为准。 图4 对话标签
  • 机器人设置 基本信息展示了该机器人的名称、头像、行业、类型、所属人、备注信息的基本信息。其中所属人是指的当前机器人的归属者,支持更换所属人。备注信息是该机器人的描述信息,配置后,可在机器人平台页面的机器人卡片上展示。 图5 机器人设置 针对语音机器人,除上述配置信息外,还支持最大外呼时长和静音检测时间的高级设置的配置: 最大外呼时长指的是外呼通话时长超过设置的最大外呼时长后,将会自动挂断;最大外呼时长默认关闭。 静音检测时间指:当人停止说话后,机器人将等待设定的静音检测时长后才会回复话术。该处静音检测时间的配置是全局的(默认配置500ms),若在流程中单独配置,则流程中的优先级最高,即以流程中配置的时间为准。
  • 训练平台 当企业使用场景不同时,所需机器人的语义模型不同,为帮助企业中的AI训练工程师通过数据训练出满足自己业务需求的语义模型,增加模型训练功能。通过模型训练,可以快速、灵活地按照自身的业务需求训练语义模型,自主完成数据模型的训练、模型评估。 训练是让机器人通过机器学习等人工智能技术,学习并掌握标准问题和相似问法的数据特征,以获得回答用户提问的能力。 在页面显示待训练标准问变更条数, 待训练语料变更条数,支持模型训练、实时显示训练进度和剩余所需时间,支持查看训练历史和详细模型数据,包含召回率、准确率、F1,同时下载验证数据,可以查看每个标准问数据及明细数据。 图6 训练平台
  • 问答知识 问答知识主要用于回答用户的业务问题,在列表页支持展示目录树、标准问法、标准答案、归属分类、相似问法数量、命中次数(用户问题命中该标准问的累计数量)、知识更新时间、状态字段。支持按照相似问法数量、命中次数、更新时间排序,列表默认按照更新时间倒序排列。 图1 问答知识 目录树维护用以区分知识的分类和级别,展示各类别知识的数量和层级。目录树支持知识类别的增删改查,最多支持5级,支持按照目录树分类模糊搜索。
  • 大屏监控 呼叫大屏支持展示当日企业呼叫中心各维度的关键数据,页面支持自动刷新。 展示数据包含: 今日坐席实时状态分布:呈现企业全部坐席状态的数量分布,其中状态包含示闲、示忙、通话、话后处理、小休和离线。 当前排队人数:呈现当前时间点企业的全部排队客户数。 今日话务总量:呈现企业当日的全部通话数。 今日通话总时长:呈现企业当日全部坐席与客户的通话总时长。 呼入电话总量:呈现企业当日的全部呼入电话总量。 呼入接听量:呈现企业当日呼入电话中被坐席接起的电话总量 呼入接听率:即呼入接听量/呼入电话总量。 呼出电话总量:呈现企业当日的全部呼出电话总量。 呼出接听量:呈现企业当日呼出电话中被客户接起的电话总量 呼出接听率:即呼出接听量/呼出电话总量。 呼入通话总时长:呈现企业当日呼入电话中被坐席接起电话的通话总时长 呼入通话平均时长:即呼入通话总时长/呼入接听量 呼出通话总时长:呈现企业当日呼出电话中被客户接起电话的通话总时长 呼出通话平均时长:即呼出通话总时长/呼出接听量 10s服务水平:呈现当日企业全部坐席接通的呼入电话中在振铃10s内(含)接听电话的比例 15s服务水平:呈现当日企业全部坐席接通的呼入电话中在振铃15s内(含)接听电话的比例 20s服务水平:呈现当日企业全部坐席接通的呼入电话中在振铃20s内(含)接听电话的比例 一次性解决率:呈现企业当日坐席的一次性解决率平均值,一次性解决率=当天之内只与该企业坐席接通过一次电话(包含呼入呼出)的客户/该企业全部坐席当天通过电话服务(包含呼入呼出)客户的总量*100% 业务类型TOP5:呈现企业当日由坐席填写的小结的数量前5名。 今日电话数据趋势:今日各个时间的呼入电话总量和呼出电话总量的趋势,每小时统计一次。 父主题: 全媒体呼叫中心
  • 配置描述 参数入口: 在应用提交时通过“--conf”设置这些参数,或者在客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中调整如下参数。 表1 参数说明 参数 参数说明 取值示例 spark.executor.memoryOverhead 用于指定每个executor的堆外内存大小(MB),增大该参数值,可以防止物理内存超限。 该值是通过max(384,executor-memory*0.1)计算所得,最小值为384。 1024
  • 配置场景 SparkSQL在进行shuffle操作时默认的分块数为200。在数据量特别大的场景下,使用默认的分块数就会造成单个数据块过大。如果一个任务产生的单个shuffle数据块大于2G,该数据块在被fetch的时候还会报类似错误: Adjusted frame length exceeds 2147483647: 2717729270 - discarded 例如,SparkSQL运行TPCDS 500G的测试时,使用默认配置出现错误。所以当数据量较大时需要适当的调整该参数。
  • 配置场景 当Spark开启事件日志模式,即设置“spark.eventLog.enabled”为“true”时,就会往配置的一个日志文件中写事件,记录程序的运行过程。当程序运行很久,job很多,task很多时就会造成日志文件很大,如JD BCS erver、Spark Streaming程序。 而日志回滚功能是指在写事件日志时,将元数据事件(EnviromentUpdate,BlockManagerAdded,BlockManagerRemoved,UnpersistRDD,ExecutorAdded,ExecutorRemoved,MetricsUpdate,ApplicationStart,ApplicationEnd,LogStart)写入日志文件中,Job事件(StageSubmitted, StageCompleted, TaskResubmit, TaskStart,TaskEnd, TaskGettingResult, JobStart,JobEnd)按文件的大小进行决定是否写入新的日志文件。对于Spark SQL的应用,Job事件还包含ExecutionStart、ExecutionEnd。 Spark中有个HistoryServer服务,其UI页面就是通过读取解析这些日志文件获得的。在启动HistoryServer进程时,内存大小就已经定了。因此当日志文件很大时,加载解析这些文件就可能会造成内存不足,driver gc等问题。 所以为了在小内存模式下能加载较大日志文件,需要对大应用开启日志滚动功能。一般情况下,长时间运行的应用建议打开该功能。
  • 配置描述 要启动小文件优化,在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置。 当SQL逻辑中不包含Shuffle操作时,设置此配置项,不会有明显的性能提升。 表1 参数说明 参数 描述 取值示例 spark.sql.files.maxPartitionBytes 在读取文件时,将单个分区打包的最大字节数。 单位:byte。 134217728(即128M) spark.files.openCostInBytes 打开文件的预估成本, 按照同一时间能够扫描的字节数来测量。当一个分区写入多个文件时使用。高估更好,这样小文件分区将比大文件分区更先被调度。 4M
  • 配置场景 Spark SQL的表中,经常会存在很多小文件(大小远小于HDFS块大小),每个小文件默认对应Spark中的一个Partition,也就是一个Task。在很多小文件场景下,Spark会起很多Task。当SQL逻辑中存在Shuffle操作时,会大大增加hash分桶数,严重影响性能。 在小文件场景下,您可以通过如下配置手动指定每个Task的数据量(Split Size),确保不会产生过多的Task,提高性能。
  • 回答 这是正常现象。 数据分到哪个partition是通过对key的hashcode取模得到的,不同的hashcode取模后的结果有可能是一样的,那样数据就会被分到相同的partition里面,因此出现有些partition没有数据而有些partition里面有多个key对应的数据。 通过调整“spark.sql.shuffle.partitions”参数值可以调整取模时的基数,改善数据分块不均匀的情况,多次验证发现配置为质数或者奇数效果比较好。 在Driver端的“spark-defaults.conf”配置文件中调整如下参数。 表1 参数说明 参数 描述 取值示例 spark.sql.shuffle.partitions shuffle操作时,shuffle数据的分块数。 200
  • 操作步骤 设置JDBCServer的公平调度策略。 Spark默认使用FIFO(First In First Out)的调度策略,但对于多并发的场景,使用FIFO策略容易导致短任务执行失败。因此在多并发的场景下,需要使用公平调度策略,防止任务执行失败。 在Spark中设置公平调度,具体请参考http://archive.apache.org/dist/spark/docs/3.1.1/job-scheduling.html#scheduling-within-an-application。 在JDBC客户端中设置公平调度。 在BeeLine命令行客户端或者JDBC自定义代码中,执行如下语句,其中PoolName是公平调度的某一个调度池。 SET spark.sql.thriftserver.scheduler.pool=PoolName; 执行相应的SQL命令,Spark任务将会在上面的调度池中运行。 设置BroadCastHashJoin的超时时间。 BroadCastHashJoin有超时参数,一旦超过预设的时间,该查询任务直接失败,在多并发场景下,由于计算任务抢占资源,可能会导致BroadCastHashJoin的Spark任务无法执行,导致超时出现。因此需要在JDBCServer的“spark-defaults.conf”配置文件中调整超时时间。 表1 参数描述 参数 描述 取值示例 spark.sql.broadcastTimeout BroadcastHashJoin中广播表的超时时间,当任务并发数较高的时候,可以调高该参数值。 -1(数值类型,实际为五分钟)
  • 回答 问题原因: ApplicationMaster进程中有1个Credential Refresh Thread会根据token renew周期 * 0.75的时间比例上传更新后的Credential文件到HDFS上。 Executor进程中有1个Credential Refresh Thread会根据token renew周期 *0.8的时间比例去HDFS上获取更新后的Credential文件,用来刷新UserGroupInformation中的token,避免token失效。 当Executor进程的Credential Refresh Thread发现当前时间已经超过Credential文件更新时间(即token renew周期 *0.8)时,会等待1分钟再去HDFS上面获取最新的Credential文件,以确保AM端已经将更新后的Credential文件放到HDFS上。 当“dfs.namenode.delegation.token.renew-interval”配置值小于60秒,Executor进程起来时发现当前时间已经超过Credential文件更新时间,等待1分钟再去HDFS上面获取最新的Credential文件,而此时token已经失效,task运行失败,然后在其他Executor上重试,由于重试时间都是在1分钟内完成,所以task在其他Executor上也运行失败,导致运行失败的Executor加入到黑名单,没有可用的Executor,应用退出。 修改方案: 在Spark使用场景下,需设置“dfs.namenode.delegation.token.renew-interval”大于80秒。“dfs.namenode.delegation.token.renew-interval”参数描述请参表1考。 表1 参数说明 参数 描述 取值示例 dfs.namenode.delegation.token.renew-interval 该参数为服务器端参数,设置token renew的时间间隔,单位为毫秒。 86400000
  • 回答 由于当前数据量较大,有50T数据导入,超过了shuffle的规格,shuffle负载过高,shuffle service服务处于过载状态,可能无法及时响应Executor的注册请求,从而出现上面的问题。 Executor注册shuffle service的超时时间是5秒,最多重试3次,该参数目前不可配。 建议适当调大task retry次数和Executor失败次数。 在客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中配置如下参数。“spark.yarn.max.executor.failures”如果不存在,则手动添加该参数项。 表1 参数说明 参数 描述 取值示例 spark.task.maxFailures task retry次数。 4 spark.yarn.max.executor.failures Executor失败次数。关闭Executor个数动态分配功能的场景即“spark.dynamicAllocation.enabled”参数设为“false”时。 numExecutors * 2, with minimum of 3 Executor失败次数。开启Executor个数动态分配功能的场景即“spark.dynamicAllocation.enabled”参数设为“true”时。 3
  • 问题 执行超过50T数据的shuffle过程时,出现部分Executor注册shuffle service超时然后丢失从而导致任务失败的问题。错误日志如下所示: 2016-10-19 01:33:34,030 | WARN | ContainersLauncher #14 | Exception from container-launch with container ID: container_e1452_1476801295027_2003_01_004512 and exit code: 1 | LinuxContainerExecutor.java:397 ExitCodeException exitCode=1: at org.apache.hadoop.util.Shell.runCommand(Shell.java:561) at org.apache.hadoop.util.Shell.run(Shell.java:472) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:738) at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.launchContainer(LinuxContainerExecutor.java:381) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:312) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:88) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 2016-10-19 01:33:34,031 | INFO | ContainersLauncher #14 | Exception from container-launch. | ContainerExecutor.java:300 2016-10-19 01:33:34,031 | INFO | ContainersLauncher #14 | Container id: container_e1452_1476801295027_2003_01_004512 | ContainerExecutor.java:300 2016-10-19 01:33:34,031 | INFO | ContainersLauncher #14 | Exit code: 1 | ContainerExecutor.java:300 2016-10-19 01:33:34,031 | INFO | ContainersLauncher #14 | Stack trace: ExitCodeException exitCode=1: | ContainerExecutor.java:300
  • ClickHouse数据写入HDFS流程 将ClickHouse数据写入HDFS,参考以下流程。例如写入HDFS的/tmp目录下的secure_ck.txt数据文件: 创建HDFS引擎表: CREATE TABLE hdfs_engine_table (name String, value UInt32) ENGINE=HDFS('hdfs://{namenode_ip}:{dfs.namenode.rpc.port}/tmp/secure_ck.txt', 'TSV') 写入HDFS数据文件: INSERT INTO hdfs_engine_table VALUES ('one', 1), ('two', 2), ('three', 3) 查询HDFS数据文件: SELECT * FROM hdfs_engine_table LIMIT 2 结果如下: ┌─name─┬─value─┐ │ one │ 1 │ │ two │ 2 │ └────┴─── ─┘ ClickHouse通过HDFS引擎表写入数据到HDFS时,如果HDFS上数据文件不存在,会生成对应的数据文件。 ClickHouse不支持删除修改和追加写HDFS引擎表数据,只能一次性写入数据。 ClickHouse删除HDFS引擎表以后对HDFS上的数据文件没有影响。
  • 操作步骤 要使用CBO优化,可以按照以下步骤进行优化。 需要先执行特定的SQL语句来收集所需的表和列的统计信息。 SQL命令如下(根据具体情况选择需要执行的SQL命令): 生成表级别统计信息(扫表): ANALYZE TABLE src COMPUTE STATIS TICS 生成sizeInBytes和rowCount。 使用ANALYZE语句收集统计信息时,无法计算非HDFS数据源的表的文件大小。 生成表级别统计信息(不扫表): ANALYZE TABLE src COMPUTE STATISTICS NOSCAN 只生成sizeInBytes,如果原来已经生成过sizeInBytes和rowCount,而本次生成的sizeInBytes和原来的大小一样,则保留rowCount(如果存在),否则清除rowCount。 生成列级别统计信息: ANALYZE TABLE src COMPUTE STATISTICS FOR COLUMNS a, b, c 生成列统计信息,为保证一致性,会同步更新表统计信息。目前不支持复杂数据类型(如Seq, Map等)和HiveStringType的统计信息生成。 显示统计信息: DESC FORMATTED src 在Statistics中会显示“xxx bytes, xxx rows”分别表示表级别的统计信息。也可以通过如下命令显示列统计信息: DESC FORMATTED src a 使用限制:当前统计信息收集不支持针对分区表的分区级别的统计信息。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行表1设置。 表1 参数介绍 参数 描述 取值示例 spark.sql.cbo.enabled CBO总开关,默认值为false。 true表示打开, false表示关闭。 要使用该功能,需确保相关表和列的统计信息已经生成。 false spark.sql.cbo.joinReorder.enabled 使用CBO来自动调整连续的inner join的顺序。 true:表示打开 false:表示关闭 要使用该功能,需确保相关表和列的统计信息已经生成,且CBO总开关打开。 false spark.sql.cbo.joinReorder.dp.threshold 使用CBO来自动调整连续inner join的表的个数阈值。 如果超出该阈值,则不会调整join顺序。 12
  • 问题 在History Server页面中访问某个Spark应用的页面时,发现访问时出错。 查看相应的HistoryServer日志后,发现有“FileNotFound”异常,相关日志如下所示: 2016-11-22 23:58:03,694 | WARN | [qtp55429210-232] | /history/application_1479662594976_0001/stages/stage/ | org.sparkproject.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:628) java.io.FileNotFoundException: ${BIGDATA_HOME}/tmp/spark/jobHistoryTemp/blockmgr-5f1f6aca-2303-4290-9845-88fa94d78480/09/temp_shuffle_11f82aaf-e226-46dc-b1f0-002751557694 (No such file or directory)
  • ClickHouse用户权限说明 ClickHouse用户权限管理实现了对集群中各个ClickHouse实例上用户、角色、权限的统一管理。通过Manager UI的权限管理模块进行创建用户、创建角色、绑定ClickHouse访问权限配置等操作,通过用户绑定角色的方式,实现用户权限控制。 给角色授予某张表的权限之后,删除表时不会清除已经授予角色的该表的权限,重新创建同名表后角色会继承原有该表的权限。如果需要,可以手动清除已经授予角色的表的权限。 例如:创建表table_test,给角色ck_role授予表table_test的读写权限,当删除表table_test后,重新创建同名表table_test,那么ck_role仍然具有表table_test的读写权限。 管理资源:Clickhouse权限管理支持的资源如表1所示。 资源权限:ClickHouse支持的资源权限如表2所示。 表1 ClickHouse支持的权限管理对象 资源列表 是否集成 备注 数据库 是(一级) - 表 是(二级) - 视图 是(二级) 与表一致 表2 资源权限列表 资源对象 可选权限 备注 数据库(DATABASE) CREATE CREATE DATABASE/TABLE/VIEW/DICTIONARY权限 表/视图(TABLE/VIEW) SELECT/INSERT - 父主题: ClickHouse用户权限管理
  • 问题 Spark应用执行过程中,当driver连接RM失败时,会报下面的错误,且较长时间不退出。 16/04/23 15:31:44 INFO RetryInvocationHandler: Exception while invoking getApplicationReport of class ApplicationClientProtocolPBClientImpl over 37 after 1 fail over attempts. Trying to fail over after sleeping for 44160ms. java.net.ConnectException: Call From vm1/192.168.39.30 to vm1:8032 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
  • 回答 在Spark中有个定期线程,通过连接RM监测AM的状态。由于连接RM超时,就会报上面的错误,且一直重试。RM中对重试次数有限制,默认是30次,每次间隔默认为30秒左右,每次重试时都会报上面的错误。超过次数后,driver才会退出。 RM中关于重试相关的配置项如表1所示。 表1 参数说明 参数 描述 取值示例 yarn.resourcemanager.connect.max-wait.ms 连接RM的等待时间最大值。 900000 yarn.resourcemanager.connect.retry-interval.ms 重试连接RM的时间频率。 30000 重试次数=yarn.resourcemanager.connect.max-wait.ms/yarn.resourcemanager.connect.retry-interval.ms,即重试次数=连接RM的等待时间最大值/重试连接RM的时间频率。 在Spark客户端节点中,通过修改“conf/yarn-site.xml”文件,添加并配置“yarn.resourcemanager.connect.max-wait.ms”和“yarn.resourcemanager.connect.retry-interval.ms”,这样可以更改重试次数,Spark应用可以提早退出。
  • SparkSQL权限 类似于Hive,SparkSQL也是建立在Hadoop上的 数据仓库 框架,提供类似SQL的结构化数据。 MRS 提供用户、用户组和角色,集群中的各类权限需要先授予角色,然后将用户或者用户组与角色绑定。用户只有绑定角色或者加入绑定角色的用户组,才能获得权限。 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Spark2x的Ranger访问权限策略。 Spark2x开启或关闭Ranger鉴权后,需要重启Spark2x服务,并重新下载客户端,或刷新客户端配置文件spark/conf/spark-defaults.conf: 开启Ranger鉴权:spark.ranger.plugin.authorization.enable=true 关闭Ranger鉴权:spark.ranger.plugin.authorization.enable=false
  • SparkSQL使用场景及对应权限 用户通过SparkSQL服务创建数据库需要加入Hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。 如果用户访问别人创建的表或数据库,需要授予权限。所以根据SparkSQL使用场景的不同,用户需要的权限可能也不相同。 表1 SparkSQL使用场景 主要场景 用户需要的权限 使用SparkSQL表、列或数据库 使用其他用户创建的表、列或数据库,不同的场景需要不同的权限,例如: 创建表,需要“创建”。 查询数据,需要“查询”。 插入数据,需要“插入”。 关联使用其他组件 部分场景除了SparkSQL权限,还可能需要组件的权限,例如: 使用Spark on HBase,在SparkSQL中查询HBase表数据,需要设置HBase权限。 在一些特殊SparkSQL使用场景下,需要单独设置其他权限。 表2 SparkSQL授权注意事项 场景 用户需要的权限 创建SparkSQL数据库、表、外表,或者为已经创建的表或外表添加分区,且Hive用户指定数据文件保存在“/user/hive/warehouse”以外的HDFS目录。 需要此目录已经存在,客户端用户是目录的属主,且用户对目录拥有“读”、“写”和“执行”权限。同时用户对此目录上层的每一级目录都拥有“读”和“执行”权限。 在Spark2x中,在创建HBase的外表时,需要拥有Hive端database的“创建”权限。而在Spark 1.5中,在创建HBase的外表时,需要拥有Hive端database的“创建”权限,也需要拥有HBase端Namespace的“创建”权限。 用户使用load将指定目录下所有文件或者指定文件,导入数据到表中。 数据源为Linux本地磁盘,指定目录时需要此目录已经存在,系统用户“omm”对此目录以及此目录上层的每一级目录拥有“r”和“x”的权限。指定文件时需要此文件已经存在,“omm”对此文件拥有“r”的权限,同时对此文件上层的每一级目录拥有“r”和“x”的权限。 数据源为HDFS,指定目录时需要此目录已经存在,SparkSQL用户是目录属主,且用户对此目录及其子目录拥有“读”、“写”和“执行”权限,并且其上层的每一级目录拥有“读”和“执行”权限。指定文件时需要此文件已经存在,SparkSQL用户是文件属主,且用户对文件拥有“读”、“写”和“执行”权限,同时对此文件上层的每一级目录拥有“读”和“执行”权限。 创建函数、删除函数或者修改任意数据库。 需要授予“管理”权限。 操作Hive中所有的数据库和表。 需加入到supergroup用户组,并且授予“管理”权限。 对部分datasource表赋予insert权限后,执行insert|analyze操作前需要单独对hdfs上的表目录赋予写权限。 当前对spark datasource表赋予Insert权限时,如果表格式为:text|csv|json|parquet|orc,则不会修改表目录的权限。因此,对以上几种类型的datasource表赋予Insert权限后,还需要单独对hdfs上的表目录赋予写权限,用户才能成功对表执行insert|analyze操作。
  • SparkSQL权限模型 用户使用SparkSQL服务进行SQL操作,必须对SparkSQL数据库和表(含外表和视图)拥有相应的权限。完整的SparkSQL权限模型由元数据权限与HDFS文件权限组成。使用数据库或表时所需要的各种权限都是SparkSQL权限模型中的一种。 元数据权限 元数据权限即在元数据层上进行权限控制,与传统关系型数据库类似,SparkSQL数据库包含“创建”和“查询”权限,表和列包含“查询”、“插入”、“UPDATE”和“删除”权限。SparkSQL中还包含拥有者权限“OWNERSHIP”和Spark管理员权限“管理”。 数据文件权限,即HDFS文件权限 SparkSQL的数据库、表对应的文件保存在HDFS中。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。系统自动以数据库名称和数据库中表的名称创建子目录。访问数据库或者表,需要在HDFS中拥有对应文件的权限,包含“读”、“写”和“执行”权限。 用户对SparkSQL数据库或表执行不同操作时,需要关联不同的元数据权限与HDFS文件权限。例如,对SparkSQL数据表执行查询操作,需要关联元数据权限“查询”,以及HDFS文件权限“读”和“执行”。 使用Manager界面图形化的角色管理功能来管理SparkSQL数据库和表的权限,只需要设置元数据权限,系统会自动关联HDFS文件权限,减少界面操作,提高效率。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全