我是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
欢迎任何帮助,在此先非常感谢您
即使数据集只有一个元素(在您的情况下为1行x 1列),您仍然需要将变量(注册以存储数据)声明为数组。换句话说,声明并创建变量val
,如下所示:
String val[] = new String[1];
另外,请检查HDFql reference manual中的5.2.51节,以了解可以在Java中使用方法variableRegister
注册的变量类型。