使用Iceberg管理在带Kerberos认证的HDFS集群的数据时,加载Icerberg table没有任何问题,但是一到读取数据时,就报Kerberos认证问题。随后进行debug,发现使用Parquet读取数据时使用的ParquetFileReader在实例化时将Icerberg的InputFile转成了Parquet的InputFile,这个过程丢失了认证信息,并在后面读取数据时需要重新打开文件。造成了只会在读取Parquet时,会存在Kerberos认证问题。相关源码如下图:
解决方案显而易见,在读取数据的操作外面需要带上Kerberos认证的信息