You need to enable JavaScript to run this app.
文档中心
E-MapReduce

E-MapReduce

复制全文
下载 pdf
生态与集成
使用 SparkSQL Warehouse 访问 Lance 表
复制全文
下载 pdf
使用 SparkSQL Warehouse 访问 Lance 表

EMR Serverless SparkSQL Warehouse 计算组适用于专项高效执行 Spark SQL,且已提供 Lance 集成能力,用户可在 SparkSQL Warehouse 计算组中配置 Lance Catalog,并通过 SQL 访问 Lance 表。本文为您介绍如何使用 SparkSQL Warehouse 计算组访问 Lance 表。

前提条件

在开始操作前,请确认:

操作步骤

步骤一:创建 SparkSQL Warehouse 计算组

在目标 Serverless 队列中创建 SparkSQL Warehouse 计算组。创建时按业务需要配置计算资源等参数。SparkSQL Warehouse 计算组的创建入口、参数说明和管理方式请参见创建与管理计算组
Image

步骤二:配置 Spark 参数

创建计算组后,点击计算组名称,进入计算组详情页,在 SparkSQL Warehouse 计算组的参数配置中,添加访问 Lance 表所需的 Spark 参数。
Image
示例参数:

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

参数项

说明

spark.executorEnv.JAVA_HOME

配置 Executor进程使用的 Java 安装路径,用于确保 Executor 使用指定版本的 JDK。

spark.kubernetes.driverEnv.JAVA_HOME

配置运行在 Kubernetes 上的 Driver 进程使用的 Java 安装路径。

tqs.query.engine.type

指定查询引擎类型,用于选择提交或执行查询任务时使用的引擎类型。

spark.sql.storeAssignmentPolicy

配置 Spark SQL 的字段赋值策略。设置为 ANSI 时,Spark会按照 ANSI SQL 规则处理类型转换和赋值。

emr.serverless.spark.custom.parse.enabled

开启表示可以执行 lance-spark connector 的扩展 SQL 功能。

serverless.spark.lance.enabled

开启 Serverless Spark 中的 Lance 相关能力。

spark.executor.extraClassPath

为 Executor 进程追加额外的 ClassPath,用于加载 Lance、Proton、Paimon、Iceberg、Hudi、Delta 等扩展依赖。

spark.driver.extraClassPath

为 Driver 进程追加额外的 ClassPath,用于加载 Lance、Proton、Paimon、Iceberg、Hudi、Delta 等扩展依赖。

/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/*

用冒号:串起来的6个路径清单:

/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/*

指定Lance、Proton、Paimon、Iceberg、Hudi、Delta 等扩展依赖的路径。

spark.sql.catalog.lance

Lance 的 Spark Catalog 实现。

spark.sql.extensions

配置 Spark SQL Extensions(Spark SQL 扩展),用于启用 Lance 相关的 SQL 扩展能力。

spark.sql.catalog.lance.impl

默认值 las2 ,表示从 LAS 元数据中心获取表元信息。

步骤三:执行 Lance 表查询

  1. 在计算组页面右上角SQL 编辑器。
    Image

  2. 进入SQL 编辑器页面,点击右上角计算组下拉框,选择选择步骤一中创建的 SparkSQL Warehouse 计算组,
    Image

  3. 执行访问 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 表名。

常见问题
  • 如果查询报权限错误,请先确认当前用户是否具备目标 LAS Catalog 和表的访问权限。
  • 如果查询无法识别 Lance Catalog,请检查 spark.sql.catalog.lancespark.sql.extensionsserverless.spark.lance.enabled 等参数是否已正确配置。
最近更新时间:2026.08.10 16:22:25
这个页面对您有帮助吗?
有用
有用
无用
无用