更新时间:2024-11-29 GMT+08:00
如何处理联邦场景表与/tmp目录命名空间不同导致的写表失败问题
问题
联邦场景,对表进行写操作(例如insert),报类似以下错误信息:
Error moving data files from hdfs://nsfed/tmp/hetuengine/presto-hetutest/.9f23b71e-234d-768a-8b93f-cdee9297f25f.crc to final location hdfs://nsfed/user/hive/warehouse/hetutb/20230928_022345_00209_ajke4@default@HetuEngine_234d-768a-8b93f-cdee92dqeqef
回答
该报错是因为联邦场景,“/tmp”和“/user”挂载在不同的nameservice, 但路径前缀使用“hdfs://nsfed”,未显式使用nameservice,导致文件移动失败。可通过如下两种方式解决:
- 在Hive数据源中增加配置hive.temporary-staging-directory-path=/user/tmp/hetuengine/presto-${USER}
- 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
- 在概览页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
- 选择“数据源”,在需要查询Hive建表的数据源后单击“编辑”。
- 添加自定义配置,名称填“hive.temporary-staging-directory-path”,值填“/user/tmp/hetuengine/presto-${USER}”。
- 检查填写无误后,单击“确定”,等待约1分钟后,重新执行查询语句即可。
父主题: HetuEngine常见问题