EMR Serverless SparkSQL Warehouse 计算组适用于专项高效执行 Spark SQL,且已提供 Lance 集成能力,用户可在 SparkSQL Warehouse 计算组中配置 Lance Catalog,并通过 SQL 访问 Lance 表。本文为您介绍如何使用 SparkSQL Warehouse 计算组访问 Lance 表。
在开始操作前,请确认:
在目标 Serverless 队列中创建 SparkSQL Warehouse 计算组。创建时按业务需要配置计算资源等参数。SparkSQL Warehouse 计算组的创建入口、参数说明和管理方式请参见创建与管理计算组。
创建计算组后,点击计算组名称,进入计算组详情页,在 SparkSQL Warehouse 计算组的参数配置中,添加访问 Lance 表所需的 Spark 参数。
示例参数:
spark.executorEnv.JAVA_HOME=/usr/local/jdk17u spark.kubernetes.driverEnv.JAVA_HOME=/usr/local/jdk17u tqs.query.engine.type=sparkcli spark.sql.storeAssignmentPolicy=ANSI emr.serverless.spark.custom.parse.enabled=true serverless.spark.lance.enabled=true spark.executor.extraClassPath=/opt/emr/current/spark/extensions/lance/*:/opt/emr/current/spark/extensions/proton/*:/opt/emr/current/spark/extensions/paimon/*:/opt/emr/current/spark/extensions/iceberg/*:/opt/emr/current/spark/extensions/hudi/*:/opt/emr/current/spark/extensions/delta/* spark.driver.extraClassPath=/opt/emr/current/spark/extensions/lance/*:/opt/emr/current/spark/extensions/proton/*:/opt/emr/current/spark/extensions/paimon/*:/opt/emr/current/spark/extensions/iceberg/*:/opt/emr/current/spark/extensions/hudi/*:/opt/emr/current/spark/extensions/delta/* spark.sql.catalog.lance=org.lance.spark.LanceNamespaceSparkCatalog spark.sql.extensions=org.lance.spark.extensions.LanceSparkSessionExtensions spark.sql.catalog.lance.impl=las2
参数项 | 说明 |
|---|---|
| 配置 Executor进程使用的 Java 安装路径,用于确保 Executor 使用指定版本的 JDK。 |
| 配置运行在 Kubernetes 上的 Driver 进程使用的 Java 安装路径。 |
| 指定查询引擎类型,用于选择提交或执行查询任务时使用的引擎类型。 |
| 配置 Spark SQL 的字段赋值策略。设置为 ANSI 时,Spark会按照 ANSI SQL 规则处理类型转换和赋值。 |
| 开启表示可以执行 lance-spark connector 的扩展 SQL 功能。 |
| 开启 Serverless Spark 中的 Lance 相关能力。 |
| 为 Executor 进程追加额外的 ClassPath,用于加载 Lance、Proton、Paimon、Iceberg、Hudi、Delta 等扩展依赖。 |
| 为 Driver 进程追加额外的 ClassPath,用于加载 Lance、Proton、Paimon、Iceberg、Hudi、Delta 等扩展依赖。 |
| 用冒号
指定Lance、Proton、Paimon、Iceberg、Hudi、Delta 等扩展依赖的路径。 |
| Lance 的 Spark Catalog 实现。 |
| 配置 Spark SQL Extensions(Spark SQL 扩展),用于启用 Lance 相关的 SQL 扩展能力。 |
| 默认值 las2 ,表示从 LAS 元数据中心获取表元信息。 |
在计算组页面右上角SQL 编辑器。
进入SQL 编辑器页面,点击右上角计算组下拉框,选择选择步骤一中创建的 SparkSQL Warehouse 计算组,
执行访问 Lance 表数据的查询语句。示例查询:
SELECT * FROM lance.<las_catalog_name>.<las_database_name>.<table_name> LIMIT 10;
其中,<las_catalog_name>、<las_database_name> 和 <table_name> 分别替换为实际的 LAS Catalog 名称、数据库名称和 Lance 表名。
spark.sql.catalog.lance、spark.sql.extensions 和 serverless.spark.lance.enabled 等参数是否已正确配置。