Проблемы параллелизма в java-доступе к Jdbc Impala - PullRequest
0 голосов
/ 24 января 2019

Что я хочу сделать: иметь два потока 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 и т. Д.

...