Apache Drill在Docker容器中:java.net.BindException:已经在使用的地址

我正在使用Apache Drill将csv数据转换为parquet。

我想以分布的方式做到这一点,所以我启动一个Docker容器,运行类似于下面的例子的代码,以转换为CSV。

当我一次运行一个实例时,这个效果很好。 但是当我同时旋转几个容器时,这个堆栈跟踪操作经常失败:

Error: Failure in starting embedded Drillbit: java.net.BindException: Address already in use (state=,code=0) java.sql.SQLException: Failure in starting embedded Drillbit: java.net.BindException: Address already in use at org.apache.drill.jdbc.impl.DrillConnectionImpl.<init>(DrillConnectionImpl.java:131) at org.apache.drill.jdbc.impl.DrillJdbc41Factory.newDrillConnection(DrillJdbc41Factory.java:72)... 

我对Drill不太了解 – 在此之前我没有用过它。 我认识到Drill的多个实例不能同时运行,但是这些Docker容器不应该彼此了解。

他们共同的一件事是他们写入一个共同的(共享)输出文件夹。 但每个文件名都是唯一的。

任何人都可以点亮这个?

有我应该看的configuration设置?

我正在运行的代码与此类似:

 alter session set `store.format`='parquet'; CREATE TABLE dfs.tmp.`/fp9gr34f/parquet_tmp_output` AS SELECT CASE when columns[0]='source_file' or columns[0]='' then CAST(NULL AS VARCHAR(100)) else CAST(columns[0] as VARCHAR(100)) end as `source_file`, CASE when columns[1]='column1' or columns[1]='' then CAST(NULL AS INT) else CAST(columns[1] as INT) end as `msg_command`, CASE when columns[2]='column2' or columns[2]='' then CAST(NULL AS INT) else CAST(columns[2] as INT) end as `msg_length` FROM dfs.`/path/to/my/file.csv` OFFSET 1 

Interesting Posts