使用java按行获取qubole数据

qv7cva1a  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(341)

我在试着运行一个 hive 使用qubole sdk进行查询。虽然我能够得到预期的结果 string ,为了更好地处理它,我希望按行访问此。类似于java对象的列表。
我获取数据的方法是:

CommandResponse commandResponse = client.command().hive().query(query).invoke().get();
ResultLatch resultLatch = new ResultLatch(client, commandResponse.getId());
ResultValue resultValue = resultLatch.awaitResult();
System.out.println(resultValue.getResults());

控制台提供如下输出:

"val1"  "val2"  "val3"  "val4"
........ some more set of values .......

我希望这个结果集是以列表的形式出现的,我可以对其进行迭代,而不是解析或标记一堆字符串。
找不到任何库或类(如果有)。

1tu0hz3e

1tu0hz3e1#

字符串拆分方式 \r\n 先是,然后是 \t 这样地:

import org.apache.commons.lang3.StringUtils;

...

private static String convertNulls(String s) {
    \\Use this function to convert blanks, null and \\N to''
    return StringUtils.isBlank(s) | 
       s.equalsIgnoreCase("null") | 
        s.equalsIgnoreCase("\\N") ? "" : s;
}

...

inputStr=resultValue.getResults();

if (!StringUtils.isBlank(inputStr)) {
            for (String row: inputStr.split("\r\n")) { //split rows
                String[] s = row.split("\t");          //split columns

                //Do what you want here with s 
                //Use convertNulls method to convert all NULLs variations to empty strings
                //Or load some ArrayList or Map, etc

            }

相关问题