You need to enable JavaScript to run this app.
导航
常见问题
最近更新时间:2024.09.30 16:28:50首次发布时间:2024.05.23 10:57:52

1 创建Database时提示IllegalArgumentException报错

代码:
create database test_db;
报错信息:
org.apache.kyuubi.KyuubiSQLException: org.apache.kyuubi.KyuubiSQLException: Error operating ExecuteStatement: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: tos://serverless-sparktest_lf.db

原因:
直接原因是用户没有指定database location,默认情况下会根据LasFormation默认数据目录路径补全Database路径,但是用户没有设置默认数据目录路径。
解决方案:
在LAS控制台 - 数据目录设置存储位置。
如桶或目录不存在,需先跳转到TOS控制台创建桶和目录。

2 创建Database时提示LfSecurityException

代码:create database test_db location 'tos://testos/test_db.db';
报错信息:
代码:create database test_db location 'tos://testos/test_db.db';
报错信息:
org.apache.kyuubi.KyuubiSQLException: org.apache.kyuubi.KyuubiSQLException: Error operating ExecuteStatement: org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Caught exception: class bytedance.olap.las.gemini.exception.LfSecurityException, message:java.net.SocketException: Broken pipe (Write failed))at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:119)

原因:用户没有开通LasFormation。
解决方案:开通LasFormation。

3 Serverless spark执行作业时提示用户无操作权限

2024-05-08 15:16:59-ERROR: analysis.AnalysisException: Permission denied: user [1025770] does not have privilege in:
[Resource{resourceScope='TABLE', catalogName='hive', schemaName='test_lf', tableName='table_20240507'}], action:[SELECT]

原因:用户对对象没有权限。
解决方案:到LAS - 权限管理,对用户授权对应对象。
详细说明:权限管理

4 用户无法重复授权

问题说明:用户被授予表read权限后,写数据提示无write权限,再对用户授予write权限时提示用户已授权,不能重复授权。
问题原因:同一用户仅支持授予单一角色
解决方案:可以找到该条授权记录编辑用户角色

5 如何查询其它catalog的数据

如果spark要查询LasFormation上创建的其它catalog(比如 catalog名称是other_catalog),有两种方式

  • 方式1:set spark.hive.metastore.catalog.default=other_catalog;

设置完这个参数之后,访问db/table的所有方式,跟访问默认catalog的方式一样。

select * from db.table1; # 实际上会访问other_catalog.db.table1
  • 方式2:直接使用三段式的方式访问
select * from other_catalog.db.table1;

说明

三段式的方式,目前只支持select语句中使用,不支持放在insert/create database语句中使用

6 如何查询其它租户的数据

比如租户A要访问租户B的db1.table1,那么租户1可以使用下面的方式访问

select * from `B@db1`.table1; # 其中B是租户B的租户id,比如210002323