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
Sieht aus wie ein Fehler in unserer Java API, aber ich werde meine Mitarbeiter anpingen, um sicherzustellen, dass. –
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
ja, das sieht richtig aus! –