代码: 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控制台创建桶和目录。
代码: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。
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 - 权限管理,对用户授权对应对象。
详细说明:权限管理
问题说明:用户被授予表read权限后,写数据提示无write权限,再对用户授予write权限时提示用户已授权,不能重复授权。
问题原因:同一用户仅支持授予单一角色
解决方案:可以找到该条授权记录编辑用户角色
如果spark要查询LasFormation上创建的其它catalog(比如 catalog名称是other_catalog),有两种方式
设置完这个参数之后,访问db/table的所有方式,跟访问默认catalog的方式一样。
select * from db.table1; # 实际上会访问other_catalog.db.table1
select * from other_catalog.db.table1;
说明
三段式的方式,目前只支持select语句中使用,不支持放在insert/create database语句中使用
比如租户A要访问租户B的db1.table1,那么租户1可以使用下面的方式访问
select * from `B@db1`.table1; # 其中B是租户B的租户id,比如210002323