文档首页/ MapReduce服务 MRS/ 组件操作指南(安卡拉区域)/ 使用HetuEngine/ HetuEngine常见问题/ 如何处理联邦场景表与/tmp目录命名空间不同导致的写表失败问题
更新时间: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,导致文件移动失败。可通过如下两种方式解决:

  • 建表时显式地指定location中的nameservice,例如:

  • 在Hive数据源中增加配置hive.temporary-staging-directory-path=/user/tmp/hetuengine/presto-${USER}
    1. 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
    2. 在概览页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
    3. 选择“数据源”,在需要查询Hive建表的数据源后单击“编辑”。
    4. 添加自定义配置,名称填“hive.temporary-staging-directory-path”,值填“/user/tmp/hetuengine/presto-${USER}”。
    5. 检查填写无误后,单击“确定”,等待约1分钟后,重新执行查询语句即可。