java - java访问Jdbc Impala的并发问题
问题描述
我想要做的:有两个线程 t1,t2,其中 t1 连接到 I1 impala 集群,t2 连接到 I2
t1 和 t2 都有在各自数据库中执行查询集的任务。
下面是伪代码:
queriesMap(queryName,query)//got the queries dynamically from another table, customized and set to map here
myThreadMethod(queriesMap, connUrl)
{
conn = getImpalaConnection(connUrl)
stmt = conn.createStatement()
for each query in queriesMap
{
ResultSet rs=stmt.executeQuery(query);
ResultSetMetadata rsMetadata = rs.getMetadata();
rs.next(); //assuming retrieving only the sum- only one row
for(i=1;i<=rsMetadata .getColumnCount();i++)
{
//append column names and print
//append result values and print
}
}
}
现在,每次打印的列和结果值都不相同。如果相同的代码在没有线程的情况下运行,则结果符合预期。注意:我尝试过 threadlocal 但没有帮助
任何人都可以让我知道这里可能导致什么问题吗?
预期结果:
线程 1
Query1 q1-C1 q1-C2 q1-C3 q1-c4 q1-c5
q1-V1 q1-V2 q1-V3 q1-V3 q1-V5
Query2 q2-C1 q2-C2 q2-C3
q2-V1 q2-V2 q2-V3
Query3 q3-C1 q3-C2 q3-C3 q3-c4 q3-c5
q3-V1 q3-V2 q3-V3 q3-V3 q3-V5
线程2
Query1 q1-C1 q1-C2 q1-C3 q1-c4 q1-c5
q1-V1 q1-V2 q1-V3 q1-V3 q1-V5
Query2 q2-C1 q2-C2 q2-C3
q2-V1 q2-V2 q2-V3
Query3 q3-C1 q3-C2 q3-C3 q3-c4 q3-c5
q3-V1 q3-V2 q3-V3 q3-V3 q3-V5
我目前得到的结果并不总是相同,仅作为示例:查询 1 的 q1-c1 column1 ,查询 1 的 q1-v1 值/结果 1
线程1:
Query1 q1-C1 q1-C2 q1-C3 q1-c4 q1-c5
q1-V1 q1-V2 q1-V3 q1-V3 q1-V5
Query2 q2-C1 q2-C2 q2-C3
q2-V1 q2-V2 q2-V3
Query3 q3-C1 q3-C2 q3-C3 q3-c4 q3-c5
q3-V1 q3-V2 q3-V3 q3-V3 q3-V5
T2:
Query1 q1-C1 q1-C2 q1-C3 q1-c4 q1-c5
q1-V1 q1-V2 q1-V3 q1-V3 q1-V5
Query2 q2-C1 q2-C2 q2-C3
q2-V1 q2-V2 q2-V3
**Query3 q2-C1 q2-C2 q2-C3
q3-V1 q3-V2 q3-V3**
如预期结果和当前结果所示,线程 2 Query3 存在列元数据混乱的问题。此结果不一致,Query1 有一次,Query2 有一次等
解决方案
推荐阅读
- python - Python 请求 - “SSL 传输上的数据致命错误无法识别的 kwarg 数据”
- python-3.x - 用于参数数据类型的 Python 文档字符串 PEP257
- selenium - 无法使用 selenium 自动登录 gmail,在输入电子邮件 ID 后要求输入代码
- amazon-web-services - Terraform Splat 表达式给出“无效的模板插值”
- reactjs - 我希望这个 useRef 和 useEffect 组合会失败……为什么会成功?
- react-native - ViroPolyline:ViroARImageMarker.onAnchorFound 上的不确定路径
- jpeg - TIFF 图像文件中的 JPEG 压缩质量
- git - 使用 master 更新分支但隐藏 JIRA 标签
- apache-spark - 如何调整 PySpark 以优化处理大型编号。的分区?
- html - 缩小图像以适应弹性列