我正在尝试从镶木地板文件中读取元数据信息:
metaData=ParquetFileReader.readFooter(fs.getConf(),file) ;
此行在CLOSE_WAIT
-state 中打开一个连接(使用lsof -p pid
命令检查)。
TCP rack162-hdp26-dev:36608->rack162-hdp26-dev:1019 (CLOSE_WAIT)
在超过 65,536 个文件上,它返回“打开的文件太多”-错误(因此需要重新启动我的应用程序)。我尝试替换为:
try (ParquetFileReader r = ParquetFileReader.open(fs.getConf(), file)) {
logger.info("Getting metadata for:" + file.toString());
metaData = r.getFooter()
//other code//
}
但仍然面临一个问题。我已经尝试过版本为 1.8.1、1.10.1、1.11.1 的 parquet-hadoop jar,但每个版本都面临问题。