概述
本示例将展示如何创建 HiveMetaStore 集群,并已有 Spark 集群与新集群关联以便执行 SparkSQL 作业,查询 Tos 中的数据。
资源准备
- 您已创建一个 EMR On VKE Spark 集群;
- 一个 TOS 桶,并创建一个空目录用于存储数据(或您已存储数据,希望使用 SparkSQL 查询的数据);
- 一个 RDS 实例及对应表,用于存储 HMS Schema 元数据。注意检查该实例是否有白名单限制(白名单需要对您的 vke 集群放开)。
创建 HMS 集群
进入火山引擎 EMR 控制台 -> on VKE -> 创建虚拟集群:
- 选择产品版本及服务,服务选择 Hive;
- 填写集群信息,配置专属节点及对应的名称等信息;
- 选择 TOS bucket 对应的下属目录作为 SparkSQL 数据存储地址(请记录该值,在后续配置 spark 中使用)。之后填写具有该 bucket 读写权限的 AK、SK;
- 选择 RDS 实例及库作为 HMS schema 存储表
注意
如果您无历史数据,为避免发生数据覆盖,请选择新库作为 hms schema 的初始化库。hms 部署时将创建并更新对应库内的表及数据以满足 hms 运行时需要
- 点击确定完成集群创建。
配置 Spark 集群配置
此处假设您已创建对应的 spark 集群,您需要将上述创建的 hive 相关配置配置到 spark 集群中以便使用。
- 配置 hive.metasotore.uris 参数:
- 确定 hms 的 thrift 地址。该参数为 hms 的 thrift 地址,拼接规则为:
thrift://hive-metastore.{hive 集群所在 namespace}:9083/TCP
其中 namespace 可以在服务列表中查看:
- 在 spark 控制台配置 spark-defaults.conf 中对应配置项为上述值
之后点击右上角保存按钮。
- 添加配置项 spark.sql.warehouse.dir:
- 确定对应值:该值为您创建 hms 指定的 tos bucket及文件目录值。该值您也可以在 hms 集群中的配置项中找到:
之后点击确定,然后保存。
- 点击重启按钮,生效配置:
等待重启完成。
提交 SparkSQL 作业
目前 sparkSQL 作业需要进入 Spark-Operator 镜像中以进行执行。
- 进入 VKE 集群,选择“无状态负载”,找到对应的 sparkOperator 镜像,并点击“控制台”进入:
- 执行 spark sql 交互式命令:
/opt/spark/bin/spark-sql
- 执行 spark SQL 命令。
CREATE Table demo1 (key1 int, key2 int);
INSERT INTO demo1 (key1, key2) VALUES (1, 2);
SELECT * from demo1;