You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: update Zerobus Ingest skill for SDK v1.1.0 breaking API changes (#291)
* fix: update Zerobus Ingest skill for SDK v1.1.0 breaking API changes
SDK v1.1.0 introduces breaking changes from v0.2.x that cause skill-generated
code to fail at runtime. All changes verified through E2E testing.
Key fixes:
- Constructor: positional args -> keyword args (host=, unity_catalog_url=)
- Ingest pattern: ingest_record(json.dumps(record)) + flush()
- SDK version: >=0.2.0 -> >=1.0.0
- Status: Public Preview -> GA (Feb 2026)
- Add serverless compute limitation and REST API alternative
- Add explicit table grants requirement (Error 4024)
- Fix typos: "speficfied" -> "specified", "Workslfow" -> "Workflow"
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* revert constructor to positional style (matches official docs)
The ZerobusSdk constructor works fine with positional args. The internal
parameter names changed in v1.1.0 but positional passing still works.
Reverted to match the official Databricks documentation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: databricks-skills/databricks-zerobus-ingest/1-setup-and-authentication.md
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,21 +76,25 @@ GRANT MODIFY, SELECT ON TABLE my_catalog.my_schema.my_events TO `<service-princi
76
76
77
77
**Tip:** For broader access (e.g., writing to multiple tables in a schema), grant `MODIFY` and `SELECT` at the schema level instead.
78
78
79
+
**Important:** For Zerobus, always grant explicit table-level `MODIFY` and `SELECT` permissions in addition to catalog/schema access. Schema-level inherited grants may not be sufficient for the OAuth `authorization_details` flow used by Zerobus.
**Note:** The Zerobus SDK cannot be pip-installed on Databricks serverless compute. Use classic compute clusters, or use the [Zerobus REST API](https://docs.databricks.com/aws/en/ingestion/zerobus-rest-api) (Beta) for notebook-based ingestion without the SDK.
record = {"device_name": "sensor-1", "temp": 22, "humidity": 55}
98
-
offset =stream.ingest_record_offset(record)
99
-
stream.wait_for_offset(offset)
99
+
stream.ingest_record(json.dumps(record))
100
+
stream.flush()
100
101
finally:
101
102
stream.close()
102
103
```
@@ -115,7 +116,7 @@ finally:
115
116
116
117
---
117
118
118
-
You must always follow all the steps in the Workslfow
119
+
You must always follow all the steps in the Workflow
119
120
120
121
## Workflow
121
122
0.**Display the plan of your execution**
@@ -129,8 +130,10 @@ You must always follow all the steps in the Workslfow
129
130
---
130
131
131
132
## Important
132
-
- Never install local packages
133
+
- Never install local packages
133
134
- Always validate MCP server requirement before execution
135
+
-**Serverless limitation**: The Zerobus SDK cannot pip-install on serverless compute. Use classic compute clusters, or use the [Zerobus REST API](https://docs.databricks.com/aws/en/ingestion/zerobus-rest-api) (Beta) for notebook-based ingestion without the SDK.
136
+
-**Explicit table grants**: Service principals need explicit `MODIFY` and `SELECT` grants on the target table. Schema-level inherited permissions may not be sufficient for the `authorization_details` OAuth flow.
134
137
135
138
---
136
139
@@ -173,7 +176,7 @@ When execution fails:
173
176
Databricks provides Spark, pandas, numpy, and common data libraries by default. **Only install a library if you get an import error.**
@@ -193,7 +196,7 @@ The timestamp generation must use microseconds for Databricks.
193
196
-**gRPC + Protobuf**: Zerobus uses gRPC as its transport protocol. Any application that can communicate via gRPC and construct Protobuf messages can produce to Zerobus.
194
197
-**JSON or Protobuf serialization**: JSON for quick starts; Protobuf for type safety, forward compatibility, and performance.
195
198
-**At-least-once delivery**: The connector provides at-least-once guarantees. Design consumers to handle duplicates.
196
-
-**Durability ACKs**: Each ingested record returns an offset. Use `wait_for_offset(offset)` to confirm durable write. ACKs indicate all records up to that offset have been durably written.
199
+
-**Durability ACKs**: Each ingested record returns a `RecordAcknowledgment`. Use `flush()` to ensure all buffered records are durably written, or use `wait_for_offset(offset)` for offset-based tracking.
197
200
-**No table management**: Zerobus does not create or alter tables. You must pre-create your target table and manage schema evolution yourself.
198
201
-**Single-AZ durability**: The service runs in a single availability zone. Plan for potential zone outages.
199
202
@@ -210,6 +213,8 @@ The timestamp generation must use microseconds for Databricks.
210
213
|**Throughput limits hit**| Max 100 MB/s and 15,000 rows/s per stream. Open multiple streams or contact Databricks. |
211
214
|**Region not supported**| Check supported regions in [5-operations-and-limits.md](5-operations-and-limits.md). |
212
215
|**Table not found**| Ensure table is a managed Delta table in a supported region with correct three-part name. |
216
+
|**SDK install fails on serverless**| The Zerobus SDK cannot be pip-installed on serverless compute. Use classic compute clusters or the REST API (Beta) from notebooks. |
217
+
|**Error 4024 / authorization_details**| Service principal lacks explicit table-level grants. Grant `MODIFY` and `SELECT` directly on the target table — schema-level inherited grants may be insufficient. |
0 commit comments