H2O 3.10.4.7でJavaプログラムを開発しており、カラム名やデータ型などのフレーム内のすべてのカラムに関するメタデータを取得する必要があります。関連する質問(解決されていない、別の問題)here。H2oApi Javaバインディング列のエンドポイントがカラムのメタデータを返さない
私たちの期待water.bindings.H2oApi
クライアントはちょうどRESTエンドポイントのように動作していることであり、私達は、Javadocの中で説明しH2oApi方法frameColumns(FrameKeyV3 frameId)
使用していた:
"Return all the columns from a Frame."
をが、結果は任意の列に関連した情報が含まれていません。 ブラウザ経由でRESTエンドポイントを使用すると、期待どおりのフレーム内の列に関する詳細情報が取得されます。例:
H2oApi:
FramesV3 params = new FramesV3();
params.frameId = stringToKey(frame, FrameKeyV3.class); // "frame" reference from import process, works
// try with frameColumns()
FramesV3 frameColumns = api.frameColumns(params);
System.out.println(frameColumns.toString()); // "columns" not included in JSON response
結果:
{
"column":"",
"row_offset":0,
"row_count":0,
"column_offset":0,
"column_count":0,
"find_compatible_models":false,
"path":"",
"force":false,
"num_parts":1,
"frames":[
{
"frame_id":{
"name":"3d257aae-7266-48a1-8f35-1243436616ab",
"type":"Key\u003cFrame\u003e",
"URL":"/3/Frames/3d257aae-7266-48a1-8f35-1243436616ab"
},
"byte_size":1928,
"is_text":false,
"_exclude_fields":""
}
],
"_exclude_fields":""
}
RESTエンドポイント:
http://localhost:54321/3/Frames/3d257aae-7266-48a1-8f35-1243436616ab/columns
結果:
{
"__meta": {
"schema_version": 3,
"schema_name": "FramesV3",
"schema_type": "Frames"
},
"_exclude_fields": "",
"row_offset": 0,
"row_count": 0,
"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<Frame>"
},
"name": "3d257aae-7266-48a1-8f35-1243436616ab",
"type": "Key<Frame>",
"URL": "/3/Frames/3d257aae-7266-48a1-8f35-1243436616ab"
},
"byte_size": 1928,
"is_text": false,
"row_offset": 0,
"row_count": 100,
"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": [ ... ]
"string_data": null,
"precision": 1,
"histogram_bins": null,
"histogram_base": 0.0,
"histogram_stride": 0.0,?
"percentiles": null
...
}
私たちが必要とするメタデータを取得するためにJSONエンティティの「列」に興味がありますが、H2o Java Apiでは提供していません。
よろしくお願いいたします。
ニコ
これは、私たちの 'toString'の「バグ」かもしれません。'((FrameV3)(frameColumns.frames [0])))列[0] .label'を試してみてください。 –
私は試しました 'FramesV3 frameColumns = api.frameColumns(params); java.lang.AssertionError:water.bindings.pojos(System.out.println)(System.out.println(frameV3) .FrameBaseV3はwater.bindings.pojos.FrameV3'にキャストできません。 – entusias
これは 'water.bindings.pojos.FrameV3'が' water.bindings.pojos.FrameBaseV3'を拡張し、それ以外の方法ではないので意味があります。 'FrameBaseV3'はオブジェクトマッピングのためにRetrofitによって' water.bindings.pojos.FramesV3'で使われているようだが、カラムは含まれていない。だから私は、 'H2oApi'メソッドが' water.bindings.pojos.FramesV3'型のオブジェクトを返す限り、 'water.bindings.pojos.FrameBaseV3'配列をFrame参照として列が結果に決して含まれないことを推測します。 – entusias