Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Docker容器中的钻孔:java.net.BindException:地址已在使用中_Docker_Parquet_Apache Drill - Fatal编程技术网

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

Apache Docker容器中的钻孔:java.net.BindException:地址已在使用中,docker,parquet,apache-drill,Docker,Parquet,Apache Drill,我正在使用ApacheDrill将csv数据转换为拼花地板 我想以分布式的方式来实现这一点,所以我启动了一个Docker容器,运行类似下面示例的代码来转换为CSV 当我一次运行一个实例时,效果很好。但是,当我同时启动多个容器时,此堆栈跟踪操作通常会失败: Error: Failure in starting embedded Drillbit: java.net.BindException: Address already in use (state=,code=0) java.sql.SQLE

我正在使用ApacheDrill将csv数据转换为拼花地板

我想以分布式的方式来实现这一点,所以我启动了一个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)...

你能分享你的
docker run
命令吗?我实际上使用的是AWS批处理,它启动容器。好的,那么AWS批处理作业定义如何?它旋转容器,从S3中提取一个脚本,然后运行它。没什么特别的。如果我一次运行一个,一切正常。看起来Drill一定是在做一些有趣的事情,比如符号链接和/tmp文件夹。我不清楚两个容器如何在AWS land中共享/tmp……这表明多个Drill实例在同一个ec2实例上运行。这对于docker来说应该不是问题,除非您告诉docker绑定到主机端口,或者在启动容器时将--net=host配置为标志。请向我们提供您在作业定义中运行的脚本。如果您不能提供整个脚本,请按照前面的建议提供执行
docker运行的行。如果没有这些信息,我们无法查明问题所在。您可以共享您的
docker run
命令吗?我实际上使用的是AWS批处理,它启动容器。好的,那么AWS批处理作业定义如何?它旋转容器,从S3提取脚本,然后运行它。没什么特别的。如果我一次运行一个,一切正常。看起来Drill一定是在做一些有趣的事情,比如符号链接和/tmp文件夹。我不清楚两个容器如何在AWS land中共享/tmp……这表明多个Drill实例在同一个ec2实例上运行。这对于docker来说应该不是问题,除非您告诉docker绑定到主机端口,或者在启动容器时将--net=host配置为标志。请向我们提供您在作业定义中运行的脚本。如果您不能提供整个脚本,请按照前面的建议提供执行
docker运行的行。如果没有这些信息,我们就无法查明问题所在。
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