2017-05-22 2 views
1

Ich arbeite an einem Java-Projekt mit dem H 2 O (3.10.4.7) REST-API zur Verfügung gestellt von den H2O Java-Bindungen und ich habe folgendes Problem abzurufen:Mit H2OApi Java Bindings H2O Rahmen

Wir brauchen Metadaten abzurufen aus Frames bestehende H2O wie:

  • Spaltennamen und
  • Datentypen dieser Spalten,

vorzugsweise die H2oApi.class verwenden.

Unser Ansatz besteht darin, eine Zeile aus dem H2O-Frame zu holen und sie dann zu verwenden, um die Metadaten zu erhalten, die wir benötigen.

Bisher habe ich versucht, die folgenden:

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); 

Ich erhalte diese Ausnahme:

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) 

Wenn ich die REST-API Frames Endpoint via Browser funktioniert es verwenden. Beispiel:

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

Ergebnis in Browser:

{ 

"__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<Frame>" 
      }, 
      "name": "89a05762-4bcd-41d8-a800-f9cfc3ac73dd", 
      "type": "Key<Frame>", 
      "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 
      }, 
      ... 
} 

Bin ich etwas fehlt oder ist es vielleicht eine bessere Möglichkeit, diese Frame-Infos über die H2O Java-REST-API zu bekommen?

Vielen Dank im Voraus und einen schönen Tag!

Nico

+0

Sieht aus wie ein Fehler in unserer Java API, aber ich werde meine Mitarbeiter anpingen, um sicherzustellen, dass. –

+0

Hey Mateusz! Ein Kollege hat das Exception-Problem im Python-Skript behoben, das für das Generieren der Bindungen verantwortlich ist. Er hat eine Pull-Anfrage erstellt, um ein anderes Problem zu beheben, aber mit seinen Änderungen wird mein Code erfolgreich abgeschlossen. Verwechseln Sie also nicht den Titel. Die Pull-Anfrage: https://github.com/h2oai/h2o-3/pull/1130 – entusias

+0

ja, das sieht richtig aus! –

Antwort

0

die ursprüngliche Frage zu beantworten (Ausnahme) dies in der Tat in H2O ein Fehler ist, zur Zeit gibt es keine Abhilfe außer von this branch Gebäuden.

Wie erwähnt, diese Methode gibt die Metadaten nicht zurück, wird diesen Teil in this question beantworten.