Skip to content

Commit 9440368

Browse files
authored
[FSTORE-789] multi modular hsfs java client (#975)
multi modular hsfs java client
1 parent 7a934e2 commit 9440368

File tree

119 files changed

+338
-221
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+338
-221
lines changed

.github/workflows/mkdocs-master.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,15 @@ jobs:
3535
restore-keys: |
3636
${{ runner.os }}-maven-
3737
38+
- name: Set up JDK 8
39+
uses: actions/setup-java@v3
40+
with:
41+
java-version: '8'
42+
distribution: 'adopt'
43+
3844
- name: Build java doc documentation
3945
working-directory: ./java
40-
run: mvn clean package javadoc:javadoc -DskipTests && cp -r target/apidocs ../docs/javadoc
46+
run: mvn clean install javadoc:javadoc javadoc:aggregate -DskipTests && cp -r target/site/apidocs ../docs/javadoc
4147

4248
- name: setup git
4349
run: |

.github/workflows/mkdocs-release.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,15 @@ jobs:
4242
restore-keys: |
4343
${{ runner.os }}-maven-
4444
45+
- name: Set up JDK 8
46+
uses: actions/setup-java@v3
47+
with:
48+
java-version: '8'
49+
distribution: 'adopt'
50+
4551
- name: Build java doc documentation
4652
working-directory: ./java
47-
run: mvn clean package javadoc:javadoc -DskipTests && cp -r target/apidocs ../docs/javadoc
53+
run: mvn clean install javadoc:javadoc javadoc:aggregate -DskipTests && cp -r target/site/apidocs ../docs/javadoc
4854

4955
- name: setup git
5056
run: |

java/hsfs/pom.xml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>hsfs-sdk</artifactId>
7+
<groupId>com.logicalclocks</groupId>
8+
<version>3.2.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>hsfs</artifactId>
13+
14+
15+
<properties>
16+
<javax.version>2.2.11</javax.version>
17+
</properties>
18+
19+
<dependencies>
20+
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
21+
<dependency>
22+
<groupId>javax.xml.bind</groupId>
23+
<artifactId>jaxb-api</artifactId>
24+
<version>${javax.version}</version>
25+
<scope>provided</scope>
26+
</dependency>
27+
</dependencies>
28+
</project>

java/src/main/java/com/logicalclocks/hsfs/StorageConnector.java renamed to java/hsfs/src/main/java/com/logicalclocks/hsfs/StorageConnector.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,16 @@
2323
import com.google.common.base.Strings;
2424
import com.logicalclocks.hsfs.metadata.Option;
2525
import com.logicalclocks.hsfs.metadata.StorageConnectorApi;
26-
2726
import com.logicalclocks.hsfs.util.Constants;
28-
import com.logicalclocks.hsfs.spark.engine.SparkEngine;
27+
2928
import lombok.AllArgsConstructor;
3029
import lombok.Getter;
3130
import lombok.NoArgsConstructor;
3231
import lombok.Setter;
3332
import lombok.ToString;
3433

3534
import java.io.IOException;
36-
import java.nio.file.Files;
37-
import java.nio.file.Paths;
3835
import java.time.Instant;
39-
import java.util.Base64;
4036
import java.util.HashMap;
4137
import java.util.List;
4238
import java.util.Map;
@@ -491,17 +487,11 @@ public static class BigqueryConnector extends StorageConnector {
491487
/**
492488
* Set spark options specific to BigQuery.
493489
* @return Map
494-
* @throws IOException IOException
495490
*/
496491
@Override
497-
public Map<String, String> sparkOptions() throws IOException {
492+
public Map<String, String> sparkOptions() {
498493
Map<String, String> options = new HashMap<>();
499494

500-
// Base64 encode the credentials file
501-
String localKeyPath = SparkEngine.getInstance().addFile(keyPath);
502-
byte[] fileContent = Files.readAllBytes(Paths.get(localKeyPath));
503-
options.put(Constants.BIGQ_CREDENTIALS, Base64.getEncoder().encodeToString(fileContent));
504-
505495
options.put(Constants.BIGQ_PARENT_PROJECT, parentProject);
506496
if (!Strings.isNullOrEmpty(materializationDataset)) {
507497
options.put(Constants.BIGQ_MATERIAL_DATASET, materializationDataset);

java/src/main/java/com/logicalclocks/hsfs/engine/FeatureGroupEngineBase.java renamed to java/hsfs/src/main/java/com/logicalclocks/hsfs/engine/FeatureGroupEngineBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
package com.logicalclocks.hsfs.engine;
1919

2020
import com.logicalclocks.hsfs.metadata.FeatureGroupApi;
21-
import com.logicalclocks.hsfs.FeatureGroupBase;
2221
import com.logicalclocks.hsfs.metadata.HopsworksClient;
2322
import com.logicalclocks.hsfs.metadata.TagsApi;
23+
import com.logicalclocks.hsfs.FeatureGroupBase;
2424
import com.logicalclocks.hsfs.EntityEndpointType;
2525
import com.logicalclocks.hsfs.Feature;
2626
import com.logicalclocks.hsfs.FeatureStoreException;

java/src/main/java/com/logicalclocks/hsfs/engine/FeatureGroupUtils.java renamed to java/hsfs/src/main/java/com/logicalclocks/hsfs/engine/FeatureGroupUtils.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@
1717

1818
package com.logicalclocks.hsfs.engine;
1919

20-
import com.logicalclocks.hsfs.Feature;
21-
import com.logicalclocks.hsfs.FeatureStoreBase;
2220
import com.logicalclocks.hsfs.metadata.FeatureGroupApi;
23-
import com.logicalclocks.hsfs.FeatureGroupBase;
2421
import com.logicalclocks.hsfs.metadata.HopsworksClient;
2522
import com.logicalclocks.hsfs.metadata.KafkaApi;
23+
import com.logicalclocks.hsfs.metadata.Subject;
24+
import com.logicalclocks.hsfs.Feature;
25+
import com.logicalclocks.hsfs.FeatureStoreBase;
26+
import com.logicalclocks.hsfs.FeatureGroupBase;
2627
import com.logicalclocks.hsfs.FeatureGroupCommit;
2728
import com.logicalclocks.hsfs.FeatureStoreException;
2829

29-
import com.logicalclocks.hsfs.metadata.Subject;
3030
import lombok.SneakyThrows;
3131
import org.apache.avro.Schema;
3232
import org.apache.avro.SchemaBuilder;

java/src/main/java/com/logicalclocks/hsfs/engine/FeatureViewEngineBase.java renamed to java/hsfs/src/main/java/com/logicalclocks/hsfs/engine/FeatureViewEngineBase.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@
2020
import com.google.common.base.Strings;
2121
import com.google.common.collect.Lists;
2222
import com.google.common.collect.Maps;
23+
import com.logicalclocks.hsfs.constructor.Join;
24+
import com.logicalclocks.hsfs.constructor.QueryBase;
25+
import com.logicalclocks.hsfs.metadata.FeatureViewApi;
26+
import com.logicalclocks.hsfs.metadata.TagsApi;
2327
import com.logicalclocks.hsfs.Feature;
2428
import com.logicalclocks.hsfs.FeatureGroupBaseForApi;
2529
import com.logicalclocks.hsfs.Split;
2630
import com.logicalclocks.hsfs.TrainingDatasetBase;
27-
import com.logicalclocks.hsfs.constructor.Join;
28-
import com.logicalclocks.hsfs.constructor.QueryBase;
2931
import com.logicalclocks.hsfs.FeatureGroupBase;
30-
import com.logicalclocks.hsfs.metadata.FeatureViewApi;
31-
import com.logicalclocks.hsfs.metadata.TagsApi;
3232
import com.logicalclocks.hsfs.EntityEndpointType;
3333
import com.logicalclocks.hsfs.FeatureStoreBase;
3434
import com.logicalclocks.hsfs.FeatureStoreException;

java/src/main/java/com/logicalclocks/hsfs/metadata/QueryConstructorApi.java renamed to java/hsfs/src/main/java/com/logicalclocks/hsfs/metadata/QueryConstructorApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
package com.logicalclocks.hsfs.metadata;
1919

2020
import com.damnhandy.uri.template.UriTemplate;
21-
import com.logicalclocks.hsfs.FeatureGroupBase;
2221
import com.logicalclocks.hsfs.constructor.FeatureGroupAlias;
2322
import com.logicalclocks.hsfs.constructor.FsQueryBase;
2423
import com.logicalclocks.hsfs.constructor.QueryBase;
24+
import com.logicalclocks.hsfs.FeatureGroupBase;
2525
import com.logicalclocks.hsfs.FeatureStoreBase;
2626
import com.logicalclocks.hsfs.FeatureStoreException;
2727
import org.apache.http.HttpHeaders;

java/src/main/java/com/logicalclocks/hsfs/metadata/StatisticsApi.java renamed to java/hsfs/src/main/java/com/logicalclocks/hsfs/metadata/StatisticsApi.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@
3131

3232
import java.io.IOException;
3333

34-
import static com.logicalclocks.hsfs.metadata.HopsworksClient.PROJECT_PATH;
35-
import static com.logicalclocks.hsfs.metadata.HopsworksClient.getInstance;
36-
3734
public class StatisticsApi {
3835

3936
private static final String ENTITY_ROOT_PATH = "{/entityType}";
@@ -65,7 +62,7 @@ public Statistics post(TrainingDatasetBase trainingDatasetBase, Statistics stati
6562

6663
private Statistics post(Integer projectId, Integer featurestoreId, Integer entityId, Statistics statistics)
6764
throws FeatureStoreException, IOException {
68-
String pathTemplate = PROJECT_PATH + FeatureStoreApi.FEATURE_STORE_PATH + STATISTICS_PATH;
65+
String pathTemplate = HopsworksClient.PROJECT_PATH + FeatureStoreApi.FEATURE_STORE_PATH + STATISTICS_PATH;
6966

7067
String uri = UriTemplate.fromTemplate(pathTemplate)
7168
.set("projectId", projectId)
@@ -79,7 +76,7 @@ private Statistics post(Integer projectId, Integer featurestoreId, Integer entit
7976
public Statistics post(FeatureViewBase featureViewBase,
8077
Integer trainingDataVersion, Statistics statistics)
8178
throws FeatureStoreException, IOException {
82-
String pathTemplate = PROJECT_PATH + FeatureStoreApi.FEATURE_STORE_PATH + FV_STATISTICS_PATH;
79+
String pathTemplate = HopsworksClient.PROJECT_PATH + FeatureStoreApi.FEATURE_STORE_PATH + FV_STATISTICS_PATH;
8380

8481
String uri = UriTemplate.fromTemplate(pathTemplate)
8582
.set("projectId", featureViewBase.getFeatureStore().getProjectId())
@@ -92,7 +89,7 @@ public Statistics post(FeatureViewBase featureViewBase,
9289
}
9390

9491
private Statistics post(String uri, Statistics statistics) throws FeatureStoreException, IOException {
95-
HopsworksClient hopsworksClient = getInstance();
92+
HopsworksClient hopsworksClient = HopsworksClient.getInstance();
9693
LOGGER.info("Sending metadata request: " + uri);
9794
HttpPost postRequest = new HttpPost(uri);
9895
postRequest.setEntity(hopsworksClient.buildStringEntity(statistics));
@@ -114,7 +111,7 @@ public Statistics get(TrainingDatasetBase trainingDatasetBase, String commitTime
114111
private Statistics get(Integer projectId, Integer featurestoreId, Integer entityId, String commitTime)
115112
throws FeatureStoreException, IOException {
116113
HopsworksClient hopsworksClient = HopsworksClient.getInstance();
117-
String pathTemplate = PROJECT_PATH
114+
String pathTemplate = HopsworksClient.PROJECT_PATH
118115
+ FeatureStoreApi.FEATURE_STORE_PATH
119116
+ STATISTICS_PATH;
120117

@@ -152,7 +149,7 @@ public Statistics getLast(TrainingDatasetBase trainingDatasetBase) throws Featur
152149
private Statistics getLast(Integer projectId, Integer featurestoreId, Integer entityId)
153150
throws FeatureStoreException, IOException {
154151
HopsworksClient hopsworksClient = HopsworksClient.getInstance();
155-
String pathTemplate = PROJECT_PATH
152+
String pathTemplate = HopsworksClient.PROJECT_PATH
156153
+ FeatureStoreApi.FEATURE_STORE_PATH
157154
+ STATISTICS_PATH;
158155

java/src/main/java/com/logicalclocks/hsfs/metadata/TagsApi.java renamed to java/hsfs/src/main/java/com/logicalclocks/hsfs/metadata/TagsApi.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,14 @@
3838
import java.util.Map;
3939
import java.util.Optional;
4040

41-
import static com.logicalclocks.hsfs.metadata.HopsworksClient.PROJECT_PATH;
42-
4341
public class TagsApi {
4442

4543
public static final String ENTITY_ROOT_PATH = "{/entityType}";
4644
public static final String ENTITY_ID_PATH = ENTITY_ROOT_PATH + "{/entityId}";
4745
public static final String TAGS_PATH = ENTITY_ID_PATH + "/tags{/name}{?value}";
48-
public static final String FV_TAGS_PATH = PROJECT_PATH + FeatureStoreApi.FEATURE_STORE_PATH
46+
public static final String FV_TAGS_PATH = HopsworksClient.PROJECT_PATH + FeatureStoreApi.FEATURE_STORE_PATH
4947
+ "/featureview{/fvName}/version{/fvVersion}/tags{/name}";
50-
public static final String FV_TD_TAGS_PATH = PROJECT_PATH + FeatureStoreApi.FEATURE_STORE_PATH
48+
public static final String FV_TD_TAGS_PATH = HopsworksClient.PROJECT_PATH + FeatureStoreApi.FEATURE_STORE_PATH
5149
+ "/featureview{/fvName}/version{/fvVersion}"
5250
+ "/trainingdatasets/version{/tdVersion}/tags{/name}";
5351

@@ -62,7 +60,7 @@ public TagsApi(@NonNull EntityEndpointType entityType) {
6260
private void add(Integer projectId, Integer featurestoreId, Integer entityId, String name, Object value)
6361
throws FeatureStoreException, IOException {
6462

65-
String pathTemplate = PROJECT_PATH
63+
String pathTemplate = HopsworksClient.PROJECT_PATH
6664
+ FeatureStoreApi.FEATURE_STORE_PATH
6765
+ TAGS_PATH;
6866

@@ -147,7 +145,7 @@ private UriTemplate getFvTdUriTemplate(FeatureViewBase featureViewBase, Integer
147145

148146
private Map<String, Object> get(Integer projectId, Integer featurestoreId, Integer entityId, Optional<String> name)
149147
throws FeatureStoreException, IOException {
150-
String pathTemplate = PROJECT_PATH
148+
String pathTemplate = HopsworksClient.PROJECT_PATH
151149
+ FeatureStoreApi.FEATURE_STORE_PATH
152150
+ TAGS_PATH;
153151

@@ -238,7 +236,7 @@ public Object parseTagValue(ObjectMapper objectMapper, Object value) throws IOEx
238236

239237
private void deleteTag(Integer projectId, Integer featurestoreId, Integer entityId, String name)
240238
throws FeatureStoreException, IOException {
241-
String pathTemplate = PROJECT_PATH
239+
String pathTemplate = HopsworksClient.PROJECT_PATH
242240
+ FeatureStoreApi.FEATURE_STORE_PATH
243241
+ TAGS_PATH;
244242

java/src/test/java/com/logicalclocks/TestHopsworksExternalClient.java renamed to java/hsfs/src/test/java/com/logicalclocks/hsfs/TestHopsworksExternalClient.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@
1414
* See the License for the specific language governing permissions and limitations under the License.
1515
*
1616
*/
17-
package com.logicalclocks;
17+
package com.logicalclocks.hsfs;
1818

1919
import com.logicalclocks.hsfs.metadata.HopsworksExternalClient;
20-
import com.logicalclocks.hsfs.FeatureStoreException;
2120
import com.logicalclocks.hsfs.metadata.Credentials;
2221
import io.specto.hoverfly.junit.core.SimulationSource;
2322
import io.specto.hoverfly.junit.dsl.HttpBodyConverter;

java/src/test/java/com/logicalclocks/hsfs/metadata/TestHopsworksClient.java renamed to java/hsfs/src/test/java/com/logicalclocks/hsfs/metadata/TestHopsworksClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public void testStringEntitySerialization() throws IOException {
4242
Assertions.assertEquals("Content-Type: application/json; charset=UTF-8",
4343
stringEntity.getContentType().toString());
4444

45-
String json = IOUtils.toString(stringEntity.getContent(), StandardCharsets.UTF_8);
45+
String json = IOUtils.toString(stringEntity.getContent(), String.valueOf(StandardCharsets.UTF_8));
4646
Assertions.assertEquals("{\"email\":\"[email protected]\",\"firstName\":\"test\",\"lastName\":\"de la Rúa Martínez\"}",
4747
json);
4848
}

0 commit comments

Comments
 (0)