2017-05-30 4 views
0

H2O 3.10.4.7でJavaプログラムを開発しており、カラム名やデータ型などのフレーム内のすべてのカラムに関するメタデータを取得する必要があります。関連する質問(解決されていない、別の問題)hereH2oApi 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では提供していません。

よろしくお願いいたします。

ニコ

+0

これは、私たちの 'toString'の「バグ」かもしれません。'((FrameV3)(frameColumns.frames [0])))列[0] .label'を試してみてください。 –

+0

私は試しました 'FramesV3 frameColumns = api.frameColumns(params); java.lang.AssertionError:water.bindings.pojos(System.out.println)(System.out.println(frameV3) .FrameBaseV3はwater.bindings.pojos.FrameV3'にキャストできません。 – entusias

+0

これは '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

答えて

0

コメントで述べたように - これは我々が改修を使用しているどのように関連するバグのようです、問題in our JIRAを作成してください。あなたはこれにRetrofit issueを指すことができます。また、H2O-3ジッタチャンネルにJIRAリンクを投稿してください。