Java ParquetFileReader导致过多TCP连接处于关闭等待状态
我正在尝试从拼花地板文件中读取元数据信息:Java ParquetFileReader导致过多TCP连接处于关闭等待状态,java,hadoop,bigdata,parquet,parquet-mr,Java,Hadoop,Bigdata,Parquet,Parquet Mr,我正在尝试从拼花地板文件中读取元数据信息: metaData=ParquetFileReader.readFooter(fs.getConf(),file) ; 此行在CLOSE\u WAIT-状态下打开一个连接(使用lsof-p pid命令检查) 在超过65536个文件上,它返回“打开的文件太多”错误(因此需要重新启动我的应用程序)。我试着替换为: try (ParquetFileReader r = ParquetFileReader.open(fs.getConf(), file)) {
metaData=ParquetFileReader.readFooter(fs.getConf(),file) ;
此行在CLOSE\u WAIT
-状态下打开一个连接(使用lsof-p pid
命令检查)
在超过65536个文件上,它返回“打开的文件太多”错误(因此需要重新启动我的应用程序)。我试着替换为:
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版本的拼花hadoop罐子,但每个都有问题。如果在循环中执行
r.close()
该怎么办?我们已经试过了,但没有成功。尽管我们在try-with-resources块中使用了这个。所以它是由try本身关闭的
try (ParquetFileReader r = ParquetFileReader.open(fs.getConf(), file)) {
logger.info("Getting metadata for:" + file.toString());
metaData = r.getFooter()
//other code//
}