aws athena & java - получить данные в виде структуры colomn - PullRequest
0 голосов
/ 22 мая 2018

Я создаю таблицу в Афине, которая отображает некоторые данные в корзину aws s3.У меня есть один столбец, тип которого является массивом объектов (структура).

CREATE EXTERNAL TABLE traceroute (
    af int,
    dst_addr string,
    dst_name string,
    `timestamp` int,
    type string,
    result array< struct< hop:int,result:array<struct<rtt:int>>>>
    ...

Я использую JDBC для получения результатов:

    Connection conn = new Tools().getConnection();
    String selectTableSQL = "SELECT * FROM \"sampledb\".\"traceroute\" limit 1";
    Statement statement = conn.createStatement();
    ResultSet rs = statement.executeQuery(selectTableSQL);
    while (rs.next()) {
        // TODO
    }

Теперь я не могу найти, как получитьданные типа структуры, например значение rtt.

Является ли JDBC правильным выбором для получения данных из вложенных данных?любая помощь?

1 Ответ

0 голосов
/ 22 мая 2018

Я нашел, как это сделать: используя скобки [] для массива и точка .для структуры.

Например, чтобы получить значение rtt первого элемента результата и второго элемента этого результата:

    Connection conn = new Tools().getConnection();
    String selectTableSQL = "SELECT result[1].result[2].rtt as rtt FROM \"sampledb\".\"traceroute\"";
    Statement statement = conn.createStatement();
    ResultSet rs = statement.executeQuery(selectTableSQL);
    while (rs.next()) {
        // TODO
        System.out.println(rs.getInt("rtt"));
    }

Однако я не могу получить содержимоевесь массив в одну переменную, чтобы сделать цикл.Я получаю массив как VarCharValue, например:

[{hop=1, result=[{from=192.168.178.1, rtt=1.13, ttl=64, x=null}, {from=192.168.178.1, rtt=0.973, ttl=64, x=null}, {from=192.168.178.1, rtt=1.097, ttl=64, x=null}]}, {hop=2, result=[{from=94.252.127.254, rtt=9.381, ttl=63, x=null}, {from=94.252.127.254, rtt=1.83, ttl=63, x=null}, {from=94.252.127.254, rtt=9.002, ttl=63, x=null}]}, {hop=3, result=[{from=10.13.69.102, rtt=9.024, ttl=62, x=null}, {from=10.13.69.102, rtt=9.248, ttl=62, x=null}, {from=10.13.69.102, rtt=8.846, ttl=62, x=null}]}, {hop=4, result=[{from=212.66.71.121, rtt=2.976, ttl=252, x=null}, {from=212.66.71.121, rtt=7.888, ttl=252, x=null}, {from=212.66.71.121, rtt=9.295, ttl=252, x=null}]}, {hop=5, result=[{from=81.20.77.45, rtt=8.541, ttl=251, x=null}, {from=81.20.77.45, rtt=8.604, ttl=251, x=null}, {from=81.20.77.45, rtt=8.857, ttl=251, x=null}]}, {hop=6, result=[{from=129.250.4.56, rtt=15.373, ttl=250, x=null}, {from=129.250.4.56, rtt=8.978, ttl=250, x=null}, {from=129.250.4.56, rtt=20.782, ttl=250, x=null}]}, {hop=7, result=[{from=129.250.6.162, rtt=99.887, ttl=249, x=null}, {from=129.250.6.162, rtt=97.941, ttl=249, x=null}, {from=129.250.6.162, rtt=98.485, ttl=249, x=null}]}, {hop=8, result=[{from=129.250.2.139, rtt=129.513, ttl=248, x=null}, {from=129.250.2.139, rtt=121.402, ttl=248, x=null}, {from=129.250.2.139, rtt=142.645, ttl=248, x=null}]}, {hop=9, result=[{from=129.250.4.214, rtt=116.211, ttl=247, x=null}, {from=129.250.4.214, rtt=117.243, ttl=247, x=null}, {from=129.250.4.214, rtt=118.314, ttl=247, x=null}]}, {hop=10, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}]}, {hop=11, result=[{from=143.56.224.122, rtt=139.849, ttl=54, x=null}, {from=143.56.224.122, rtt=136.935, ttl=54, x=null}, {from=143.56.224.122, rtt=137.629, ttl=54, x=null}]}, {hop=12, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}]}, {hop=13, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=140.6.0.3, rtt=136.145, ttl=52, x=null}]}, {hop=14, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}]}, {hop=15, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}]}, {hop=16, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}]}, {hop=17, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}]}, {hop=18, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}]}, {hop=255, result=[{from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}, {from=null, rtt=null, ttl=null, x=*}]}]
...