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