正在尝试使用Qubole SDK运行hive
查询。尽管能够以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 .......
我一直希望以列表的形式设置此结果集,我可以对其进行迭代而不是解析或标记化这串字符串。
找不到任何库或类。
答案 0 :(得分:0)
先用\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
}