如何在JAVA中使用HDFql获取数据集中的字符串类型数据?

问题描述 投票:0回答:1

我是HDF5和HDFql的新手,我在Java中工作,我有一个.h5文件,其中包含多个组,在每个组中,我有不同的数据集,其中一些是浮动数组,得到的结果如下。https://gyazo.com/c10100b327d20a2db8c13f2fd9ab7668

 Double[][] values = new Double[numRow][numCol];
 HDFql.variableRegister(values);
 HDFql.execute("SELECT FROM "+gName+"/"+dName+" INTO MEMORY "+HDFql.variableGetNumber(values));
 HDFql.variableUnregister(values);

当我的数据集的变量为1行1列且数据类型为String时,会发生问题。https://gyazo.com/2622693aee83d9eba5487a053ba9247c

我已尝试实现以下代码,但收到以下错误消息

  String[] val = new String[10];
  HDFql.variableRegister(val);
  HDFql.execute("SELECT FROM "+gName+"/"+dName+" INTO MEMORY "+HDFql.variableGetNumber(val));
  HDFql.variableUnregister(val);

String val = "";
HDFql.variableRegister(val);
HDFql.execute("SELECT FROM "+gName+"/"+dName+" INTO MEMORY "+HDFql.variableGetNumber(val));
HDFql.variableUnregister(val);

控制台显示的错误是:

Java运行时环境已检测到致命错误:

EXCEPTION_ACCESS_VIOLATION(0xc0000005)at pc = 0x000000006da2f270, pid = 42048,tid = 0x00000000000089d4

JRE版本:Java(TM)SE运行时环境(8.0_211-b12)(内部 1.8.0_211-b12)Java VM:Java HotSpot(TM)64位服务器VM(25.211-b12混合模式Windows-amd64压缩的oops)问题帧:V [jvm.dll + 0x27f270]

无法写入核心转储。默认情况下,不启用小型转储 Windows的客户端版本

包含更多信息的错误报告文件另存为: C:\ Users \ us \ AppData \ Local \ Temp \ hs_err_pid42048.log

[如果您想提交错误报告,请访问: http://bugreport.java.com/bugreport/crash.jsp

欢迎任何帮助,在此先非常感谢您

java string select hdf5 hdfql
1个回答
0
投票

即使数据集只有一个元素(在您的情况下为1行x 1列),您仍然需要将变量(注册以存储数据)声明为数组。换句话说,声明并创建变量val,如下所示:

String val[] = new String[1];

另外,请检查HDFql reference manual中的5.2.51节,以了解可以在Java中使用方法variableRegister注册的变量类型。

© www.soinside.com 2019 - 2024. All rights reserved.