华为云用户手册

  • 其他相关操作 在操作日志页面中,您可以对历史任务进行如下相关操作,具体的操作有: 表1 相关操作 操作 说明 刷新任务列表 单击任务列表右上角的按钮,可刷新列表信息。 查看任务信息 单击任务ID,可以查看该任务的具体信息,包括主机名、IP名、插件类型、任务类型、执行状态、执行失败的原因、执行事件、执行耗时和查看操作日志。 过滤任务信息 在任务列表的表头,单击各列的,可按特定类型过滤显示任务的信息。 切换任务排序 在任务列表的表头,单击各列的,可切换任务的排序,为正序排序,为倒序排序。
  • 约束与限制 当指标告警规则的状态(正常、超限阈值、生效中、停用中)发生变化时,如需使用企业微信、钉钉、飞书、语音、welink、邮件或短信等方式发送通知,请参考创建 AOM 告警通知规则设置告警通知规则。 按全量指标和按Prometheus命令创建指标告警规则时支持秒级监控,指标告警的时效性取决于指标上报周期、规则检查频率及通知发送耗时。 系统支持创建的指标告警规则、事件告警规则、应用性能监控告警规则总计不能超过3000条。 使用智能告警功能创建指标告警规则时,需要注意以下约束与限制: 智能告警功能当前仅在部分区域受限开放,如有需求可以通过提交工单,为您开放此功能。 使用智能告警监控新接入的指标时,指标的数据量不足时没有结果,需要采集足够的数据量才会有结果。 使用智能告警功能创建指标告警规则时,如果1个指标中有多条资源时间线,智能告警功能只会对指标最多的5条资源时间线生效。 同一个租户在多个区域使用智能告警功能创建多个指标告警规则时,所有告警规则中监控的指标总数最多为30个,并且智能告警功能最多支持检测150条资源时间线。 使用智能告警功能创建指标告警规则时,如果用户的指标名称过长或指标标签数量过多,会导致智能告警上报的指标入库失败,对智能告警产生影响。
  • 配置描述 安装Spark客户端。 详细操作请参考安装 MRS 客户端。 使用客户端安装用户登录Spark客户端节点。 在客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中调整如下参数,或者在应用提交时通过“--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客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 表1 参数说明 参数 参数说明 取值示例 spark.streaming.Kafka.reliability Spark Streaming对接Kafka是否开启可靠性功能。 true:开启可靠性功能。 false:不开启可靠性功能。 true
  • 操作场景 Spark Streaming对接Kafka时,当Spark Streaming应用重启后,应用根据上一次读取的topic offset作为起始位置和当前topic最新的offset作为结束位置从Kafka上读取数据的。 Kafka服务的topic的leader异常后,如果Kafka的leader和follower的offset相差太大,用户重启Kafka服务,Kafka的follower和leader相互切换,则Kafka服务重启后,topic的offset变小。 如果Spark Streaming应用一直在运行,由于Kafka上topic的offset变小,会导致读取Kafka数据的起始位置比结束位置大,这样将无法从Kafka读取数据,应用报错。 如果在重启Kafka服务前,先停止Spark Streaming应用,等Kafka重启后,再重启Spark Streaming应用使应用从checkpoint恢复。此时,Spark Streaming应用会记录终止前读取到的offset位置,以此为基准读取后面的数据,而Kafka offset变小(例如从10万变成1万),Spark Streaming会等待Kafka leader的offset增长至10万之后才会去消费,导致新发送的offset在1万至10万之间的数据丢失。 针对上述背景,提供配置Streaming对接Kafka更高级别的可靠性。对接Kafka可靠性功能开启后,上述场景处理方式如下。 如果Spark Streaming应用在运行应用时Kafka上topic的offset变小,则会将Kafka上topic最新的offset作为读取Kafka数据的起始位置,继续读取后续的数据。 对于已经生成但未调度处理的任务,如果读取的Kafka offset区间大于Kafka上topic的最新offset,则该任务会运行失败。 如果任务失败过多,则会将executor加入黑名单,从而导致后续的任务无法部署运行。此时用户可以通过配置“spark.blacklist.enabled”参数关闭黑名单功能,黑名单功能默认为开启。 如果Kafka上topic的offset变小后,Spark Streaming应用进行重启恢复终止前未处理完的任务如果读取的Kafka offset区间大于Kafka上topic的最新offset,则该任务直接丢弃,不进行处理。
  • 配置描述 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 表1 参数说明 参数 说明 配置示例 spark.yarn.security.credentials.hbase.enabled HBase是否 获取Token : true:获取 false:不获取 false
  • 操作场景 Hive是建立在Hadoop上的 数据仓库 框架,提供类似SQL的HQL操作结构化数据。 MRS提供用户、用户组和角色,集群中的各类权限需要先授予角色,然后将用户或者用户组与角色绑定。用户只有绑定角色或者加入绑定角色的用户组,才能获得权限。更多Hive授权相关信息请参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization。
  • Hive权限模型 使用Hive组件,必须对Hive数据库和表(含外表和视图)拥有相应的权限。在MRS中,完整的Hive权限模型由Hive元数据权限与HDFS文件权限组成。使用数据库或表时所需要的各种权限都是Hive权限模型中的一种。 Hive元数据权限。 与传统关系型数据库类似,MRS的Hive数据库包含“建表”和“查询”权限,Hive表和列包含“查询”、“插入”和“删除”权限。Hive中还包含拥有者权限“OWNERSHIP”和“Hive管理员权限”。 Hive数据文件权限,即HDFS文件权限。 Hive的数据库、表对应的文件保存在HDFS中。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。系统自动以数据库名称和数据库中表的名称创建子目录。访问数据库或者表,需要在HDFS中拥有对应文件的权限,包含“读”、“写”和“执行”权限。 用户对Hive数据库或表执行不同操作时,需要关联不同的元数据权限与HDFS文件权限。例如,对Hive数据表执行查询操作,需要关联元数据权限“查询”,以及HDFS文件权限“读”和“写”。 使用Manager界面图形化的角色管理功能来管理Hive数据库和表的权限,只需要设置元数据权限,系统会自动关联HDFS文件权限,减少界面操作,提高效率。
  • 配置描述 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 要启动小文件优化,在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,提高性能。
  • 约束与限制 本章节仅适用于MRS 3.3.1-LTS及之后版本。 管理面提交作业方式不支持开启动态脱敏特性。 不支持Hudi表的脱敏。 不支持非SQL使用方法的脱敏。 不支持涉及直接读写HDFS的操作的脱敏。 不支持复杂类型array、map、struct的脱敏。 只支持spark-beeline(JDBC 连接)方式提交Spark作业。 脱敏策略传递时,若目标表已有脱敏策略且与源表有冲突,则目标表脱敏策略强制重置为Custom:“***”。 当前仅支持int、char、varchar、date、decimal、float、bigint、timestamp 、tinyint、smallint、double、string、binary数据类型的脱敏,其中int、date、decimal、float、bigint、timestamp 、tinyint、smallint、double类型配置脱敏策略后,spark-beeline查询结果存在与策略预期不一致的现象,但查询结果非原始值,如需要与策略结果保持一致,则推荐使用“Nullify”脱敏策略。 对于不支持的数据类型,如果配置了脱敏策略或输出列涉及脱敏传递,最终都按“Nullify”脱敏策略处理。
  • 操作步骤 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置。 表1 参数介绍 参数 描述 取值示例 spark.sql.codegen.aggregate.map.twolevel.enabled 是否开启聚合算法优化: true:开启 false:不开启 true
  • 配置参数 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 参数 参数说明 取值示例 spark.sql.mergeSmallFiles.enabled 用于控制是否在写入数据时自动合并小文件。 true:Spark写入目标表时会判断是否写入了小文件,如果发现有小文件,则会启动合并小文件的job。 false:不启用合并小文件的功能。 true spark.sql.mergeSmallFiles.threshold.avgSize 用于精确控制小文件合并后的目标平均大小。 当启用小文件合并(spark.sql.mergeSmallFiles.enabled=true)时,且某个分区的平均文件大小小于该值,则启动小文件合并。 16MB spark.sql.mergeSmallFiles.maxSizePerTask 合并后的每个文件的目标大小。 用于控制小文件合并任务处理数据量上限的配置参数。当启用小文件合并功能(spark.sql.mergeSmallFiles.enabled=true)时,该参数限制了单个合并任务处理的最大数据量,确保合并操作高效且稳定。 256MB spark.sql.mergeSmallFiles.moveParallelism 用于控制小文件合并过程中文件移动操作的并行度。当不需要合并小文件后时,将临时文件移动到最终目录的并行度。 10000
  • 配置参数 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 参数 参数说明 取值示例 spark.sql.keep.distinct.expandThreshold 由cube等引起的数据膨胀多少倍时,触发该优化。需要配置一个大于0的数值来启用。例如1024,代表数据膨胀1024倍及以上时,触发该优化。 如果设置为-1,则不启用该优化。 100 spark.sql.distinct.aggregator.enabled 是否强制开启distinct聚合优化。 false:关闭强制开启distinct聚合优化。 true:启用强制开启distinct聚合优化,将不再受限于数据膨胀倍数的约束,直接改写distinct聚合。注意:请在确保有收益的情况下,谨慎使用此选项。 false
  • 配置描述 为了使WebUI页面显示日志,需要将聚合日志进行解析和展现。Spark是通过Hadoop的JobHistoryServer来解析聚合日志的,所以您可以通过“spark.jobhistory.address”参数,指定JobHistoryServer页面地址,即可完成解析和展现。 参数入口: 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在客户端的“spark-defaults.conf”配置文件中调整如下参数,或者在应用提交时通过“--conf”设置这些参数。 此功能依赖Hadoop中的JobHistoryServer服务,所以使用聚合日志之前需要保证JobHistoryServer服务已经运行正常。 如果参数值为空,“AggregatedLogs”页签仍然存在,但是无法通过logs链接查看日志。 只有当App已经running,HDFS上已经有该App的事件日志文件时才能查看到聚合的container日志。 正在运行的任务的日志,用户可以通过“Executors”页面的日志链接进行查看,任务结束后日志会汇聚到HDFS上,“Executors”页面的日志链接就会失效,此时用户可以通过“AggregatedLogs”页面的logs链接查看聚合日志。 表1 参数说明 参数 参数描述 spark.jobhistory.address JobHistoryServer页面的地址,格式:http(s)://ip:port/jobhistory。例如,将参数值设置为“https://10.92.115.1:26014/jobhistory”。 默认值为空,表示不能从WebUI查看container聚合日志。 修改参数后,需重启服务使得配置生效。
  • 操作场景 当Yarn配置“yarn.log-aggregation-enable”为“true”时,就开启了container日志聚合功能。日志聚合功能是指:当应用在Yarn上执行完成后,NodeManager将本节点中所有container的日志聚合到HDFS中,并删除本地日志。详情请参见配置Container日志聚合功能。 然而,开启container日志聚合功能之后,其日志聚合至HDFS目录中,只能通过获取HDFS文件来查看日志。开源Spark和Yarn服务不支持通过WebUI查看聚合后的日志。 因此,Spark在此基础上进行了功能增强。如图1所示,在HistoryServer页面添加“AggregatedLogs”页签,可以通过“logs”链接查看聚合的日志。 图1 聚合日志显示页面
  • 操作场景 当Spark Streaming应用与Kafka对接,Spark Streaming应用异常终止并从checkpoint恢复重启后,对于进入Kafka数据的任务,系统默认优先处理应用终止前(A段时间)未完成的任务和应用终止到重启完成这段时间内(B段时间)进入Kafka数据生成的任务,最后再处理应用重启完成后(C段时间)进入Kafka数据生成的任务。并且对于B段时间进入Kafka的数据,Spark将按照终止时间(batch时间)生成相应个数的任务,其中第一个任务读取全部数据,其余任务可能不读取数据,造成任务处理压力不均匀。 如果A段时间的任务和B段时间任务处理得较慢,则会影响C段时间任务的处理。针对上述场景,Spark提供Kafka后进先出功能。 图1 Spark Streaming应用重启时间轴 开启此功能后,Spark将优先调度C段时间内的任务,如果存在多个C段任务,则按照任务产生的先后顺序调度执行,再执行A段时间和B段时间的任务。另外,对于B段时间进入Kafka的数据,Spark除了按照终止时间生成相应任务,还将这个期间进入Kafka的所有数据均匀分配到各个任务,避免任务处理压力不均匀。 约束条件: 目前该功能只适用于Spark Streaming中的Direct方式,且执行结果与上一个batch时间处理结果没有依赖关系(即无state操作,如updatestatebykey)。对多条数据输入流,需要相对独立无依赖的状态,否则可能导致数据切分后结果发生变化。 Kafka后进先出功能的开启要求应用只能对接Kafka输入源。 如果提交应用的同时开启Kafka后进先出和流控功能,对于B段时间进入Kafka的数据,将不启动流控功能,以确保读取这些数据的任务调度优先级最低。应用重新启动后C段时间的任务启用流控功能。
  • 配置描述 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 表1 参数说明 参数 参数说明 取值示例 spark.streaming.kafka.direct.lifo Spark Streaming中控制Kafka的数据处理顺序。该参数通过调整数据读取策略,影响实时流处理的延迟和吞吐量。 false:优先处理最早接收到的 Kafka 消息。适合需要严格按时间顺序处理数据的场景,但可能增加最新数据的处理延迟。 true:优先处理最新接收到的Kafka消息。大幅降低最新数据的处理延迟,但可能忽略历史未处理数据。 true spark.streaming.kafka010.inputstream.class 获取解耦在 FusionInsight 侧的类。 org.apache.spark.streaming.kafka010.xxDirectKafkaInputDStream
  • 背景信息 假定用户开发一个应用程序,用于管理企业中的使用A业务的用户信息,使用Hive客户端实现A业务操作流程如下: 普通表的操作: 创建用户信息表user_info。 在用户信息中新增用户的学历、职称信息。 根据用户编号查询用户姓名和地址。 A业务结束后,删除用户信息表。 表1 用户信息 编号 姓名 性别 年龄 地址 12005000201 A 男 19 A城市 12005000202 B 女 23 B城市 12005000203 C 男 26 C城市 12005000204 D 男 18 D城市 12005000205 E 女 21 E城市 12005000206 F 男 32 F城市 12005000207 G 女 29 G城市 12005000208 H 女 30 H城市 12005000209 I 男 26 I城市 12005000210 J 女 25 J城市
  • 操作步骤 以客户端安装用户,登录安装客户端的节点,客户端安装详细操作请参见安装客户端(3.x及之后版本)。 执行以下命令切换到客户端目录,客户端安装目录如:/opt/client。 cd /opt/client 执行以下命令配置环境变量。 source bigdata_env 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建Hive表的权限,具体请参见创建角色配置拥有对应权限的角色,参考创建用户为用户绑定对应角色。如果当前集群未启用Kerberos认证,则无需执行此命令。 kinit MRS集群用户 例如,kinit hiveuser。 运行Hive客户端命令,实现A业务。 内部表操作 执行以下命令登录Hive客户端命令行: beeline 根据表1创建用户信息表user_info并添加相关数据,例如: 创建表user_info: create table user_info(id string,name string,gender string,age int,addr string); 向表user_info中插入数据: insert into table user_info(id,name,gender,age,addr) values("12005000201","A","男",19,"A城市"); 在用户信息表user_info中新增用户的学历、职称信息。 以增加编号为12005000201的用户的学历、职称信息为例,其他用户类似。 alter table user_info add columns(education string,technical string); 根据用户编号查询用户姓名和地址。 以查询编号为12005000201的用户姓名和地址为例,其他用户类似。 select name,addr from user_info where id='12005000201'; 删除用户信息表。 drop table user_info; 执行以下命令退出Hive客户端。 !q 外部分区表操作 可使用insert语句直接向外部表中插入数据,也可以使用load data命令导入HDFS中的文件数据到外部表中。如果需要使用load data命令导入文件数据,需执行以下操作: 根据表1数据创建文件。例如,文件名为“txt.log”,以空格拆分字段,以换行符作为行分隔符。 执行以下命令上传文件至HDFS中,例如“/tmp”目录下。 hdfs dfs -put txt.log /tmp 执行以下命令创建外部表数据存储路径: 创建“/hive”目录: hdfs dfs -mkdir /hive/ 创建“/hive/user_info”目录: hdfs dfs -mkdir /hive/user_info 执行以下命令登录Hive客户端命令行: beeline 执行以下命令创建表: create external table user_info(id string,name string,gender string,age int,addr string) partitioned by(year string) row format delimited fields terminated by ' ' lines terminated by '\n' stored as textfile location '/hive/user_info'; 其中: fields terminated:表示分隔的字符,如按空格分隔,则值为' '。 lines terminated:表示分行的字符,如按换行分隔,则值为'\n'。 /hive/user_info:存储表user_info数据的HDFS路径。 导入数据。 使用insert语句插入数据,以插入编号为12005000201的用户相关信息为例,其他用户类似。 insert into user_info partition(year="2018") values ("12005000201","A","男",19,"A城市"); 使用load data命令导入文件数据。 load data inpath '/tmp/txt.log' into table user_info partition (year='2011'); 其中,“/tmp/txt.log”为5.a上传至HDFS的数据文件。 执行以下命令查询导入数据。 select * from user_info; 执行以下命令删除用户信息表。 drop table user_info; 执行以下命令退出Hive客户端。 !q
  • 配置描述 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/core-site.xml”配置文件中修改配置。 表1 参数介绍 参数 描述 默认值 fs.obs.metrics.switch 上报OBS监控指标开关: true表示打开 false表示关闭 true fs.obs.metrics.consumer 指定OBS监控指标的处理方式。 org.apache.hadoop.fs.obs.metrics.OBSAMetricsProvider:表示收集统计OBS监控指标 org.apache.hadoop.fs.obs.DefaultMetricsConsumer:表示不收集OBS监控指标 要使用OBS监控功能,需确保上报OBS监控指标开关打开。 org.apache.hadoop.fs.obs.metrics.OBSAMetricsProvider
  • 约束与限制 本章节仅适用于MRS 3.3.1-LTS及之后版本。 支持形如“select id, (select group_name from emp2 b where a.group_id=b.group_id) as banji from emp1 a”的关联子查询SQL语法。 支持形如“select id, (select distinct group_name from emp2 b where a.group_id=b.group_id) as banji from emp1 a”的关联子查询SQL语法。
  • 操作场景 将datasource表的分区消息存储到Metastore中,并在Metastore中对分区消息进行处理。 优化datasource表,支持对表中分区执行增加、删除和修改等语法,从而增加与Hive的兼容性。 支持在查询语句中,把分区裁剪并下压到Metastore上,从而过滤掉不匹配的分区。 示例如下: select count(*) from table where partCol=1; //partCol列为分区列 此时,在物理计划中执行TableScan操作时,只处理分区(partCol=1)对应的数据。
  • 操作步骤 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置。 表1 参数介绍 参数 描述 取值示例 spark.sql.hive.manageFilesourcePartitions 是否启用Metastore分区管理(包括数据源表和转换的Hive表)。 true:启用Metastore分区管理,即数据源表存储分区在Hive中,并在查询语句中使用Metastore修剪分区。 false:不启用Metastore分区管理。 true spark.sql.hive.metastorePartitionPruning 是否支持将predicate下压到Hive Metastore中。 true:支持,目前仅支持Hive表的predicate下压。 false:不支持 true spark.sql.hive.filesourcePartitionFileCacheSize 启用内存中分区文件元数据的缓存大小。 所有表共享一个可以使用指定的num字节进行文件元数据的缓存。 只有当“spark.sql.hive.manageFilesourcePartitions”配置为“true”时,该配置项才会生效。 250 * 1024 * 1024 spark.sql.hive.convertMetastoreOrc 设置ORC表的处理方式: false:Spark SQL使用Hive SerDe处理ORC表。 true:Spark SQL使用Spark内置的机制处理ORC表。 true
  • 配置描述 可以通过以下两种方式配置是否过滤掉分区表分区路径不存在的分区。 方式一:在客户端配置参数。 安装Spark客户端。 详细操作请参考安装MRS客户端。 使用客户端安装用户登录Spark客户端节点。 在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置,修改如下参数: 表1 参数说明 参数 参数说明 取值示例 spark.sql.hive.verifyPartitionPath 配置读取Hive分区表时,是否过滤掉分区表分区路径不存在的分区。 “true”:过滤掉分区路径不存在的分区。 “false”:不进行过滤。 true 方式二:在spark-submit命令提交应用时,通过“--conf”参数配置是否过滤掉分区表分区路径不存在的分区。 示例: spark-submit --class org.apache.spark.examples.SparkPi --conf spark.sql.hive.verifyPartitionPath=true $SPARK_HOME/lib/spark-examples_*.jar
  • 创建Hudi表对应的Hive外部表 可在spark-shell或spark-sql中创建Hudi表并插入数据,具体操作请参见使用Spark Shell创建Hudi表或使用spark-sql操作Hudi表。 Hudi表数据在入湖的时候一般会同步到Hive外部表,此时在Beeline中可以直接查询到对应的Hive外部表,如果没有同步到Hive外部表,则可以通过Hudi客户端工具手动同步,具体步骤可参考将Hudi表数据同步到Hive。
  • 查询Hudi的Schema演进表对应的Hive外部表 如果该Hudi表为Schema演进表(表的字段执行过修改),则在Hive客户端查询该表时还需额外设置一个参数: set hive.exec.schema.evolution=true; 例如以cow表实时视图的查询举例,其他各个视图的查询都要额外添加该参数: 设置“hive.exec.schema.evolution”为“true”: set hive.exec.schema.evolution=true; 查询Hive外部表: select * from hudicow;
  • Hudi表对应的Hive外部表介绍 Hudi源表对应一份HDFS的数据,通过Spark组件、Flink组件或者Hudi客户端,可以将Hudi表的数据映射为Hive外部表,基于该外部表,Hive可以进行实时视图查询、读优化视图查询以及增量视图查询。 根据Hudi源表的类型的不同,提供不同的视图查询: Hudi源表类型为Copy On Write时,可以映射为Hive的一张外部表,该表可以提供实时视图查询以及增量视图查询。 Hudi源表类型为Merge On Read时,可以映射为Hive的两张外部表(ro表和rt表),ro表提供读优化视图查询,rt表提供实时视图查询以及增量视图查询。
  • 约束与限制 不能对Hudi表映射的Hive外部表做增删改操作(即insert、update、delete、load、merge、alter、msck),只支持查询操作(select)。 表授权 不支持修改类权限操作(即update、Alter、write、All)。 备份与恢复 由于ro表和rt表均由同一个Hudi源表映射的,备份其中一张表,另一张也会跟着备份,恢复也是同时恢复的,因此只需备份其中一张表即可。 组件版本 Hive:FusionInsight_HD_xxx,Hive内核版本3.1.0。 Spark2x:FusionInsight_Spark2x_xxx,Hudi内核版本:0.11.0。
共100000条
提示

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