This is an automated email from the ASF dual-hosted git repository.
yihua pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new 8adb095386e3 chore(api): declare the unstructured ingestion SPIs
evolving (#19701)
8adb095386e3 is described below
commit 8adb095386e34480cf6ac2bcb5289536551bbae8
Author: Rahil C <[email protected]>
AuthorDate: Mon Aug 24 17:00:40 2026 -0700
chore(api): declare the unstructured ingestion SPIs evolving (#19701)
DocumentParser and EmbeddingProvider are both user-implementable through
parser.class and provider.class, but neither declared a stability level,
unlike Source and Transformer alongside them. Mark both EVOLVING so the
signature changes they still need do not read as breaking ones.
---
.../hudi/utilities/sources/helpers/unstructured/DocumentParser.java | 6 ++++++
.../hudi/utilities/transform/embedding/EmbeddingProvider.java | 6 ++++++
2 files changed, 12 insertions(+)
diff --git
a/hudi-utilities/src/main/java/org/apache/hudi/utilities/sources/helpers/unstructured/DocumentParser.java
b/hudi-utilities/src/main/java/org/apache/hudi/utilities/sources/helpers/unstructured/DocumentParser.java
index a71cd96361b6..9fdd5e6f98ef 100644
---
a/hudi-utilities/src/main/java/org/apache/hudi/utilities/sources/helpers/unstructured/DocumentParser.java
+++
b/hudi-utilities/src/main/java/org/apache/hudi/utilities/sources/helpers/unstructured/DocumentParser.java
@@ -19,6 +19,9 @@
package org.apache.hudi.utilities.sources.helpers.unstructured;
+import org.apache.hudi.ApiMaturityLevel;
+import org.apache.hudi.PublicAPIClass;
+import org.apache.hudi.PublicAPIMethod;
import org.apache.hudi.common.config.TypedProperties;
import java.io.InputStream;
@@ -30,11 +33,13 @@ import java.io.Serializable;
* and must NEVER throw from {@link #parse}: any failure is reported via
* {@link ParseResult#failed}.
*/
+@PublicAPIClass(maturity = ApiMaturityLevel.EVOLVING)
public interface DocumentParser extends Serializable {
/**
* Called once per executor instance before the first {@link #parse}.
*/
+ @PublicAPIMethod(maturity = ApiMaturityLevel.EVOLVING)
default void init(TypedProperties props) {
}
@@ -45,5 +50,6 @@ public interface DocumentParser extends Serializable {
* @param fileName name of the file (used for format detection hints)
* @param maxTextChars cap on extracted text length; hitting it yields a
TRUNCATED result
*/
+ @PublicAPIMethod(maturity = ApiMaturityLevel.EVOLVING)
ParseResult parse(InputStream in, String fileName, int maxTextChars);
}
diff --git
a/hudi-utilities/src/main/java/org/apache/hudi/utilities/transform/embedding/EmbeddingProvider.java
b/hudi-utilities/src/main/java/org/apache/hudi/utilities/transform/embedding/EmbeddingProvider.java
index 22f625821383..34511721e8a9 100644
---
a/hudi-utilities/src/main/java/org/apache/hudi/utilities/transform/embedding/EmbeddingProvider.java
+++
b/hudi-utilities/src/main/java/org/apache/hudi/utilities/transform/embedding/EmbeddingProvider.java
@@ -19,6 +19,9 @@
package org.apache.hudi.utilities.transform.embedding;
+import org.apache.hudi.ApiMaturityLevel;
+import org.apache.hudi.PublicAPIClass;
+import org.apache.hudi.PublicAPIMethod;
import org.apache.hudi.common.config.TypedProperties;
import java.io.Serializable;
@@ -29,11 +32,13 @@ import java.util.List;
* executors and are called with record-level batches buffered within a
partition; an
* in-JVM (e.g. ONNX) implementation can slot in beside API-backed ones.
*/
+@PublicAPIClass(maturity = ApiMaturityLevel.EVOLVING)
public interface EmbeddingProvider extends Serializable {
/**
* Called once per executor instance before the first {@link #embed}.
*/
+ @PublicAPIMethod(maturity = ApiMaturityLevel.EVOLVING)
default void init(TypedProperties props) {
}
@@ -42,5 +47,6 @@ public interface EmbeddingProvider extends Serializable {
* Errors should be retried internally where transient; a thrown exception
* fails the batch (and the sync) -- the caller never silently drops vectors.
*/
+ @PublicAPIMethod(maturity = ApiMaturityLevel.EVOLVING)
List<float[]> embed(List<String> texts);
}