使用H2OApi Java绑定来检索H2O帧

我使用H2O Java绑定提供的H2O(3.10.4.7)REST Api处理Java项目,我遇到以下问题:

我们需要从现有的H2O框架中检索元数据,例如:

  • 列名称和
  • 这些列的数据类型,

最好使用H2oApi.class。

我们的方法是从H2O框架中获取一行,然后使用它来获取我们需要的元数据。

到目前为止我尝试了以下内容:

FramesV3 targetFrame = new FramesV3(); targetFrame.frameId = frameKey; // key provided by import process - works targetFrame.rowCount = 1; // get one row to figure out specs of all cols H2OApi h2oApi = new H2OApi("http://localhost:54321/"); FramesV3 result = h2oApi.frames(targetFrame); 

我得到这个例外:

  java.lang.IllegalArgumentException: @Field parameters can only be used with form encoding. (parameter #1) for method Frames.list at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:695) at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:686) at retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod.java:704) at retrofit2.ServiceMethod$Builder.parseParameterAnnotation(ServiceMethod.java:476) at retrofit2.ServiceMethod$Builder.parseParameter(ServiceMethod.java:328) at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:201) at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:166) at retrofit2.Retrofit$1.invoke(Retrofit.java:145) at com.sun.proxy.$Proxy14.list(Unknown Source) at water.bindings.H2oApi.frames(H2oApi.java:882) at H2ORestCloudTests.getSpecFromFrameTest(H2ORestCloudTests.java:388) 

如果我通过浏览器使用REST API框架端点,它的工作原理。 例:

 "http://localhost:54321/3/Frames/89a05762-4bcd-41d8-a800-f9cfc3ac73dd?row_count=1" 

浏览器结果:

  { "__meta": { "schema_version": 3, "schema_name": "FramesV3", "schema_type": "Frames" }, "_exclude_fields": "", "row_offset": 0, "row_count": 1, "column_offset": 0, "column_count": 0, "job": null, "frames": [ { "__meta": { "schema_version": 3, "schema_name": "FrameV3", "schema_type": "Frame" }, "_exclude_fields": "", "frame_id": { "__meta": { "schema_version": 3, "schema_name": "FrameKeyV3", "schema_type": "Key" }, "name": "89a05762-4bcd-41d8-a800-f9cfc3ac73dd", "type": "Key", "URL": "/3/Frames/89a05762-4bcd-41d8-a800-f9cfc3ac73dd" }, "byte_size": 1928, "is_text": false, "row_offset": 0, "row_count": 1, "column_offset": 0, "column_count": 5, "total_column_count": 5, "checksum": -7731554748204616990, "rows": 150, "num_columns": 5, "default_percentiles": [ 0.001, 0.01, 0.1, 0.2, 0.25, 0.3, 0.3333333333333333, 0.4, 0.5, 0.6, 0.6666666666666666, 0.7, 0.75, 0.8, 0.9, 0.99, 0.999 ], "columns": [ { "__meta": { "schema_version": 3, "schema_name": "ColV3", "schema_type": "Vec" }, "label": "sepal_length", "missing_count": 0, "zero_count": 0, "positive_infinity_count": 0, "negative_infinity_count": 0, "mins": [ 4.3, 4.4, 4.4, 4.4, 4.5 ], "maxs": [ 7.9, 7.7, 7.7, 7.7, 7.7 ], "mean": 5.843333333333334, "sigma": 0.8280661279778637, "type": "real", "domain": null, "domain_cardinality": 0, "data": [ 5.1000000000000005 ], "string_data": null, "precision": 1, "histogram_bins": null, "histogram_base": 0.0, "histogram_stride": 0.0, "percentiles": null }, ... } 

我错过了什么或者是否有更好的方法通过H2O Java Rest API获取这些Frame信息?

提前谢谢你,祝你有个愉快的一天!

尼科

回答原始问题(例外)这确实是H2O中的一个错误,目前除了从这个分支构建之外没有其他解决方法。

正如指出这种方法不返回元数据,将在这个问题中回答这一部分。