Что я хочу сделать: иметь два потока t1, t2, где t1 подключается к кластеру импала I1, и 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 retireving only the sum- only one row
for(i=1;i<=rsMetadata .getColumnCount();i++)
{
//append column names and print
//append result values and print
}
}
}
Теперь выводимые значения столбца и результата не всегда одинаковы.если тот же код выполняется без потоков, результаты будут такими, как ожидалось.Примечание. Я пытался использовать threadlocal, но это не помогло
Может кто-нибудь сообщить мне, что может быть причиной проблемы здесь?
Ожидаемый результат:
Thread1
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
Thread2
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
Результат, который я сейчас получаю, и это не всегда одно и то же, только для примера: q1-c1 column1 запроса 1, значение q1-v1 / результат 1 запроса 1
Thread1:
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**
Как видно из ожидаемых и текущих результатов, проблема в thread2 Query3 связана с метаданными столбца.Этот результат не согласуется, однажды возникла проблема с Query1, однажды с Query2 и т. Д.