<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>rss.livelink.threads-in-node</title>
    <link>https://community.databricks.com/t5/discussions/ct-p/Discussions</link>
    <description>rss.livelink.threads-in-node</description>
    <pubDate>Mon, 17 Aug 2026 20:47:42 GMT</pubDate>
    <dc:creator>Discussions</dc:creator>
    <dc:date>2026-08-17T20:47:42Z</dc:date>
    <item>
      <title>ML Training low File I/O and Throughout</title>
      <link>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165843#M4665</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I have an image-based deep learning workload running on Azure Databricks, while the training dataset must remain in AWS S3 due to some constraints. We cannot move or replicate the dataset to Azure.&lt;BR /&gt;Our current architecture is roughly:&lt;BR /&gt;&lt;STRONG&gt;AWS S3 (images) → Unity Catalog Volume → Azure Databricks GPU compute → PyTorch training&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;The main issue we're seeing is very high file &lt;STRONG&gt;I/O latency and relatively low training throughput&lt;/STRONG&gt;. Since the dataset contains a large number of individual image files, reading the images through the UC Volume appears to involve significant network overhead and many individual file reads.&lt;BR /&gt;I initially expected &lt;STRONG&gt;Mosaic Streaming / StreamingDatase&lt;/STRONG&gt;t to improve this because the dataset can be converted into MDS shards and the shards can be downloaded progressively to local storage while training continues.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;However, interestingly, in our testing:&lt;BR /&gt;Direct image loading from the &lt;STRONG&gt;UC Volume is currently faster than Mosaic Streaming.&lt;/STRONG&gt;&lt;BR /&gt;I'm trying to understand whether we are missing an important configuration or whether the cross-cloud architecture itself is the primary bottleneck.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;A few questions&lt;/STRONG&gt;:&lt;BR /&gt;1. What is the recommended architecture for training on S3 data from Azure Databricks when the data cannot be moved to Azure?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;2. For Mosaic Streaming, what are the recommended values/strategies for:&lt;BR /&gt;shard size&lt;BR /&gt;num_workers&lt;BR /&gt;predownload&lt;BR /&gt;cache_limit&lt;BR /&gt;shuffle configuration&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;3. Is there an optimal MDS shard size for image datasets to minimize S3/network overhead?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;4. Would increasing DataLoader workers and prefetching significantly improve throughput in this cross-cloud scenario?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;5. Would it be better to use local caching of UC Volume files instead of Mosaic Streaming for a multi-epoch image training workload?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;6. Are there any Databricks-recommended approaches for measuring whether the bottleneck is S3 → Azure network bandwidth, file-level latency, CPU image decoding, or GPU starvation?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Our main objective is to maximize GPU utilization and training throughput without moving the source dataset out of S3.&lt;BR /&gt;Any recommendations, benchmarks, or reference architectures for this type of cross-cloud training setup would be greatly appreciated&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2026 18:55:08 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165843#M4665</guid>
      <dc:creator>aswinkks</dc:creator>
      <dc:date>2026-08-17T18:55:08Z</dc:date>
    </item>
    <item>
      <title>Azure Databricks Serverless Compute Unable to Connect to Azure SQL MI Using Failover Group FQDN via</title>
      <link>https://community.databricks.com/t5/administration-architecture/azure-databricks-serverless-compute-unable-to-connect-to-azure/m-p/165820#M5524</link>
      <description>&lt;P&gt;We are using Azure Databricks Serverless Compute to connect to Azure SQL Managed Instance (SQL MI) through Network Connectivity Configuration (NCC) with Private Endpoint Rules. Connectivity works successfully when using the primary SQL MI FQDN. However, connectivity fails when the SQL Managed Instance is configured behind a Failover Group and the connection is attempted using the Failover Group listener FQDN. As a result, Databricks Serverless Compute is currently unable to establish a connection to Azure SQL MI via the Failover Group FQDN, while direct connections to the primary SQL MI endpoint continue to work as expected.&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2026 14:16:58 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/azure-databricks-serverless-compute-unable-to-connect-to-azure/m-p/165820#M5524</guid>
      <dc:creator>LokeshChikuru</dc:creator>
      <dc:date>2026-08-17T14:16:58Z</dc:date>
    </item>
    <item>
      <title>I want to help me with registration key</title>
      <link>https://community.databricks.com/t5/get-started-discussions/i-want-to-help-me-with-registration-key/m-p/165792#M12008</link>
      <description />
      <pubDate>Mon, 17 Aug 2026 11:18:27 GMT</pubDate>
      <guid>https://community.databricks.com/t5/get-started-discussions/i-want-to-help-me-with-registration-key/m-p/165792#M12008</guid>
      <dc:creator>Kayunga</dc:creator>
      <dc:date>2026-08-17T11:18:27Z</dc:date>
    </item>
    <item>
      <title>If statement in DAB YAML file support</title>
      <link>https://community.databricks.com/t5/data-engineering/if-statement-in-dab-yaml-file-support/m-p/165774#M55482</link>
      <description>&lt;P&gt;Hi,&lt;BR /&gt;Is there a plan to have if statement support in DAB YAML file?&lt;/P&gt;&lt;P&gt;For example, I would like to have different schedule for jobs based on the environment (higher frequency in PROD, lower frequency in DEV, QA). How can I do it in Databricks via workflow yml files?&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2026 08:17:59 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/if-statement-in-dab-yaml-file-support/m-p/165774#M55482</guid>
      <dc:creator>QuanDo1</dc:creator>
      <dc:date>2026-08-17T08:17:59Z</dc:date>
    </item>
    <item>
      <title>Unity Catalog Lineage APIs – Are these REST APIs publicly supported?</title>
      <link>https://community.databricks.com/t5/data-governance/unity-catalog-lineage-apis-are-these-rest-apis-publicly/m-p/165771#M2960</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I’m currently working on a PoC to build a &lt;STRONG&gt;data dictionary&lt;/STRONG&gt; in Databricks, and one of the requirements is to retrieve lineage information programmatically.&lt;/P&gt;&lt;P&gt;I was advised that Databricks provides &lt;STRONG&gt;Unity Catalog Lineage APIs&lt;/STRONG&gt; that can retrieve table-level and column-level lineage, following the Unity Catalog permission model and without requiring direct access to the system.access schema.&lt;/P&gt;&lt;P&gt;I was provided with an example endpoint:&lt;/P&gt;&lt;P&gt;/api/2.1/unity-catalog/lineage/table-lineages&lt;/P&gt;&lt;P&gt;However, after searching the current Databricks documentation, I cannot find this endpoint or any official documentation for a table-lineages REST API.&lt;/P&gt;&lt;P&gt;The situation is that our parent company does &lt;STRONG&gt;not allow us to have direct access to the system.access schema for security and governance reasons&lt;/STRONG&gt;. Therefore, querying system.access.table_lineage is not an option for our PoC.&lt;/P&gt;&lt;P&gt;My goal is to build a data dictionary and enrich it with lineage information, so I’m looking for a &lt;STRONG&gt;supported REST API&lt;/STRONG&gt; that would allow me to retrieve table-level lineage without accessing system.access.table_lineage directly.&lt;/P&gt;&lt;P&gt;Could anyone clarify:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Is /api/2.1/unity-catalog/lineage/table-lineages a supported/public Databricks REST API?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;If so, where can I find the official documentation?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is there another supported REST API to retrieve table-level lineage without querying system.access.table_lineage?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is column-level lineage also available through a supported API?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Any guidance or documentation would be greatly appreciated.&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2026 07:11:04 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/unity-catalog-lineage-apis-are-these-rest-apis-publicly/m-p/165771#M2960</guid>
      <dc:creator>faruk</dc:creator>
      <dc:date>2026-08-17T07:11:04Z</dc:date>
    </item>
    <item>
      <title>Is the Semantic Layer the Real Challenge With Databricks Genie?</title>
      <link>https://community.databricks.com/t5/get-started-discussions/is-the-semantic-layer-the-real-challenge-with-databricks-genie/m-p/165768#M12006</link>
      <description>&lt;P&gt;I've been thinking about this while looking at different Genie use cases.&lt;/P&gt;&lt;P&gt;It seems like the hardest part of implementing Genie isn't getting users to ask questions in natural language. It's making sure Genie understands what those questions actually mean in the context of the business.&lt;/P&gt;&lt;P&gt;For example, if someone asks:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;“Why did our performance drop this week?”&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Genie still needs to know:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Which metric are we talking about?&lt;/LI&gt;&lt;LI&gt;Which data is authoritative?&lt;/LI&gt;&lt;LI&gt;How are the tables related?&lt;/LI&gt;&lt;LI&gt;What does “performance” actually mean for that business?&lt;/LI&gt;&lt;LI&gt;Are there business rules that should affect the answer?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;This becomes even more important for operational use cases. Questions around NPT, ROP, equipment performance, or cost can require data from multiple systems.&lt;/P&gt;&lt;P&gt;That makes me wonder if we're putting too much emphasis on the conversational interface and not enough on what sits underneath it.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Maybe the real Genie implementation project isn't building the Genie space. It's building the context that allows Genie to give a trustworthy answer.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Curious what others are seeing:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What has been the bigger challenge in your Genie projects — configuring Genie itself, or getting the underlying data, metrics, and business definitions ready for it?&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2026 05:49:16 GMT</pubDate>
      <guid>https://community.databricks.com/t5/get-started-discussions/is-the-semantic-layer-the-real-challenge-with-databricks-genie/m-p/165768#M12006</guid>
      <dc:creator>kartikchoudhary</dc:creator>
      <dc:date>2026-08-17T05:49:16Z</dc:date>
    </item>
    <item>
      <title>Oracle CDC Ingestion Pipeline - Schema Exploration finds 0 tables when DB_DOMAIN</title>
      <link>https://community.databricks.com/t5/data-engineering/oracle-cdc-ingestion-pipeline-schema-exploration-finds-0-tables/m-p/165743#M55476</link>
      <description>&lt;DIV&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;I'm setting up an Oracle Integrated CDC Managed Ingestion Pipeline (LakeFlow Connect) on Azure Databricks. The pipeline connects to Oracle 19c successfully but Schema Exploration always returns 0 tables.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;P&gt;Error:&lt;/P&gt;&lt;P&gt;Schema Exploration has COMPLETED in 5 seconds. Found 0 table(s) in connection.&lt;BR /&gt;Extractor FAILED. [DLT ERROR CODE: INGESTION_GATEWAY_INTERNAL_ERROR]&lt;BR /&gt;Timed out waiting for all replicated tables.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Environment:&lt;/P&gt;&lt;P&gt;- Azure Databricks (Workspace with Unity Catalog)&lt;BR /&gt;- Oracle 19c Standard Edition 2 (Single-Tenant, non-CDB, non-RAC)&lt;BR /&gt;- Previews enabled: "Direct Cdc Managed Ingestion Pipeline" = ON, "Integrated Cdc Oracle Connector" = ON&lt;BR /&gt;- Pipeline type: MANAGED_INGESTION&lt;BR /&gt;- Channel: PREVIEW&lt;/P&gt;&lt;P&gt;Oracle Configuration (all verified by direct connection):&lt;/P&gt;&lt;P&gt;- ARCHIVELOG mode: Enabled&lt;BR /&gt;- Supplemental logging: MIN=YES, PK=YES (DB level) + ALL COLUMN at table level&lt;BR /&gt;- Table has Primary Key&lt;BR /&gt;- DB_DOMAIN = example.com&lt;BR /&gt;- Registered service name: `mydb.example.com` (with domain)&lt;BR /&gt;- No service registered without domain (connecting to just `MYDB` gives ORA-12514)&lt;/P&gt;&lt;P&gt;User Privileges (all confirmed):&lt;/P&gt;&lt;P&gt;- CREATE SESSION, SELECT ANY TABLE, SELECT ANY DICTIONARY, LOGMINING, SELECT ANY TRANSACTION, FLASHBACK ANY TABLE&lt;BR /&gt;- EXECUTE_CATALOG_ROLE granted&lt;BR /&gt;- Explicit SELECT grants on all target tables&lt;BR /&gt;- EXECUTE on DBMS_LOGMNR, DBMS_LOGMNR_D&lt;/P&gt;&lt;P&gt;CDC Validation (run by the pipeline itself): All 10 checks PASSED&lt;/P&gt;&lt;P&gt;The Problem:&lt;/P&gt;&lt;P&gt;My Oracle DB has `DB_DOMAIN` set, so the only valid service name is `mydb.example.com` (contains dots). But the Databricks documentation for INGESTION_GATEWAY_ORACLE_MISSING_CONFIGURATION states:&lt;/P&gt;&lt;P&gt;&amp;gt; The 'source_catalog' parameter must contain only printable ASCII characters such as letters, numbers, and underscores.&lt;/P&gt;&lt;P&gt;This creates a conflict:&lt;/P&gt;&lt;P&gt;- `source_catalog: MYDB` → Connection fails (ORA-12514, service doesn't exist without domain)&lt;BR /&gt;- `source_catalog: mydb.example.com` → Connection succeeds, TLS established, DB version detected, CDC validation passes, but Schema Exploration returns 0 tables&lt;/P&gt;&lt;P&gt;What I've tried (all failed with 0 tables):&lt;/P&gt;&lt;P&gt;- source_catalog: mydb (lowercase)&lt;BR /&gt;- source_catalog: MYDB (uppercase)&lt;BR /&gt;- source_catalog: mydb.example.com (full service name)&lt;BR /&gt;- channel: CURRENT and PREVIEW&lt;BR /&gt;- Full refresh&lt;/P&gt;&lt;P&gt;Connection config:&lt;/P&gt;&lt;P&gt;- Host: 10.x.x.x&lt;BR /&gt;- Port: 1521&lt;BR /&gt;- Service Name: mydb.example.com&lt;BR /&gt;- Encryption: native_network_encryption&lt;/P&gt;&lt;P&gt;Questions:&lt;/P&gt;&lt;P&gt;1. Does the Oracle CDC connector support databases with DB_DOMAIN set?&lt;BR /&gt;2. How should source_catalog be configured when the only valid service name contains dots?&lt;BR /&gt;3. Is adding a static listener registration (without domain) the recommended workaround?&lt;/P&gt;&lt;P&gt;Any help appreciated. Thanks!&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Sun, 16 Aug 2026 13:01:36 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/oracle-cdc-ingestion-pipeline-schema-exploration-finds-0-tables/m-p/165743#M55476</guid>
      <dc:creator>karuppusamy</dc:creator>
      <dc:date>2026-08-16T13:01:36Z</dc:date>
    </item>
    <item>
      <title>Exam issues due to Webassessor maintenance</title>
      <link>https://community.databricks.com/t5/certifications/exam-issues-due-to-webassessor-maintenance/m-p/165725#M4814</link>
      <description>&lt;P&gt;&lt;BR /&gt;Good afternoon,&lt;BR /&gt;To the Databricks team,&lt;BR /&gt;I am writing to inform you that I was scheduled to take my exam&amp;nbsp;Databricks Certified Generative AI Engineer on August 11th at 11:00 PM, but unfortunately, I was unable to do so due to maintenance on the Webassessor website.&lt;/P&gt;&lt;P&gt;Therefore, I would like to request the opportunity to reschedule the exam, as the unavailability of the Webassessor testing site prevented me from taking it. I submitted my request on August 12th but have not yet received a response; I only have the assigned ticket number, which is:&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#00989390&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 15 Aug 2026 20:19:58 GMT</pubDate>
      <guid>https://community.databricks.com/t5/certifications/exam-issues-due-to-webassessor-maintenance/m-p/165725#M4814</guid>
      <dc:creator>Leito1903</dc:creator>
      <dc:date>2026-08-15T20:19:58Z</dc:date>
    </item>
    <item>
      <title>Issues with Custom Agents on Free Edition</title>
      <link>https://community.databricks.com/t5/databricks-free-edition-help/issues-with-custom-agents-on-free-edition/m-p/165724#M867</link>
      <description>&lt;P&gt;I have ran into a few issues while learning how to use Custom Agents in Databricks Apps that I would like to call out - both to help others and hopefully motivate platform improvements.&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;The only model that seems to work is &lt;EM&gt;databricks-meta-llama-3-3-70b-instruct&lt;/EM&gt;, but I only found that out through a DataExpert.io YouTube video. It would be nice if the app templates would default to this or at least provide some guidance on the Free Edition limitations page.&amp;nbsp;&lt;/LI&gt;&lt;LI&gt;Recent changes to MCP have caused issues with the default OpenAI Agents SDK app template. You have to manually add&amp;nbsp;"mcp&amp;lt;2.0.0" to the dependencies in pyproject.toml to get it up and running.&amp;nbsp;&lt;/LI&gt;&lt;LI&gt;The second message from the user starts to cause errors. I haven't figured out how to solve this, but it is something related to the format of the message chain. For example:&lt;/LI&gt;&lt;/OL&gt;&lt;LI-CODE lang="markup"&gt;{
  "detail": "Unhandled item type or structure: {'status': None, 'content': [{'text': \"Hello, it's nice to meet you. Is there something I can help you with or would you like to chat?\", 'type': 'output_text'}], 'role': 'assistant', 'type': 'message'}"
}​&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 15 Aug 2026 19:03:59 GMT</pubDate>
      <guid>https://community.databricks.com/t5/databricks-free-edition-help/issues-with-custom-agents-on-free-edition/m-p/165724#M867</guid>
      <dc:creator>taniumalloy</dc:creator>
      <dc:date>2026-08-15T19:03:59Z</dc:date>
    </item>
    <item>
      <title>Are We Entering the Context Engineering Era?</title>
      <link>https://community.databricks.com/t5/data-engineering/are-we-entering-the-context-engineering-era/m-p/165721#M55474</link>
      <description>&lt;P&gt;I’ve been thinking about how enterprise AI is changing, especially after attending the Data + AI Summit 2026 and hearing Ali Ghodsi emphasize the importance of enterprise context. It made the direction much clearer to me. We already have very capable AI models. The bigger challenge now is giving those models the right understanding of the business.&lt;/P&gt;&lt;P&gt;What does this data mean?&lt;/P&gt;&lt;P&gt;Which metric should the AI trust?&lt;/P&gt;&lt;P&gt;Who can access it?&lt;/P&gt;&lt;P&gt;What business rules should it follow?&lt;/P&gt;&lt;P&gt;And what action should it take next?&lt;/P&gt;&lt;P&gt;That also made me think more about the &lt;STRONG&gt;4Cs: Context, Control, Choice, and Cost&lt;/STRONG&gt;. Context helps AI understand the business. Control helps enterprises govern what AI can access and do. Choice gives organizations flexibility across models and tools instead of locking everything into one path. Cost becomes critical when AI moves from a few experiments to thousands or even millions of agent actions.&lt;/P&gt;&lt;P&gt;This is why I find the direction Databricks is taking with Genie, Genie Ontology, Unity Catalog, and agents very interesting. We spent years building platforms that make enterprise data usable for people. Now we are entering a phase where that same data, meaning, governance, and business knowledge need to become usable by AI agents.&lt;/P&gt;&lt;P&gt;For me, the 4Cs are becoming a simple way to think about enterprise AI: &lt;STRONG&gt;give AI the right Context, keep the right Control, preserve Choice, and understand the Cost.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Would love to hear how others in the Databricks Community are thinking about this.&lt;/P&gt;</description>
      <pubDate>Sat, 15 Aug 2026 11:36:20 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/are-we-entering-the-context-engineering-era/m-p/165721#M55474</guid>
      <dc:creator>Brahmareddy</dc:creator>
      <dc:date>2026-08-15T11:36:20Z</dc:date>
    </item>
    <item>
      <title>SQL Query billing</title>
      <link>https://community.databricks.com/t5/warehousing-analytics/sql-query-billing/m-p/165679#M2694</link>
      <description>&lt;P&gt;Is there any way to find a cost of one single query? i can't find any table in system catalog to connect a query with usage to find the exact cost of one query run in sql warehouse?&lt;/P&gt;</description>
      <pubDate>Fri, 14 Aug 2026 15:51:29 GMT</pubDate>
      <guid>https://community.databricks.com/t5/warehousing-analytics/sql-query-billing/m-p/165679#M2694</guid>
      <dc:creator>anmolhhns</dc:creator>
      <dc:date>2026-08-14T15:51:29Z</dc:date>
    </item>
    <item>
      <title>Billing</title>
      <link>https://community.databricks.com/t5/administration-architecture/billing/m-p/165676#M5522</link>
      <description>&lt;P&gt;Hello, where can I find a breakdown of usage from the monitoring.azure_costs.costs_details table? I filtered MeterCategory = 'Foundry Models' to find out who is using which models, but the data there is only aggregated.&lt;/P&gt;</description>
      <pubDate>Fri, 14 Aug 2026 13:54:28 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/billing/m-p/165676#M5522</guid>
      <dc:creator>kosarchik</dc:creator>
      <dc:date>2026-08-14T13:54:28Z</dc:date>
    </item>
    <item>
      <title>API Get Metadata Registerd Models</title>
      <link>https://community.databricks.com/t5/data-governance/api-get-metadata-registerd-models/m-p/165661#M2958</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;I has been call DBX API for get all metadata model&lt;BR /&gt;My user have no EXECUTE privileges on registered model, it only have USE CATALOG / USE SCHEMA&amp;nbsp; on parent catalog/schema&lt;BR /&gt;I still can get all metadata of Model&lt;BR /&gt;&lt;BR /&gt;Here is my python code for call API:&lt;BR /&gt;&lt;SPAN&gt;___&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;EM&gt;import json&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;from databricks.sdk import WorkspaceClient&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;w = WorkspaceClient()&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;list_models = w.registered_models.list(&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; catalog_name="system", &lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; schema_name="ai",&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; include_browse=True)&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;i=0&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;for model in list_models:&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; print(json.dumps(model.as_dict(), indent=4, ensure_ascii=False))&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;&amp;nbsp; &amp;nbsp; i+=1&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;EM&gt;print(i)&lt;/EM&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;___&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;But this documentation required&amp;nbsp;&lt;SPAN class=""&gt;EXECUTE&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;privilege on the registered model (&lt;A href="https://docs.databricks.com/api/workspace/registeredmodels/list" target="_blank" rel="noopener"&gt;https://docs.databricks.com/api/workspace/registeredmodels/list&lt;/A&gt;)&lt;BR /&gt;&lt;BR /&gt;Can anyone explain for me, please? T___T&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Aug 2026 07:58:09 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-governance/api-get-metadata-registerd-models/m-p/165661#M2958</guid>
      <dc:creator>vinhdv4</dc:creator>
      <dc:date>2026-08-14T07:58:09Z</dc:date>
    </item>
    <item>
      <title>How to use AI for photo filter during registration like OwnMates?</title>
      <link>https://community.databricks.com/t5/generative-ai/how-to-use-ai-for-photo-filter-during-registration-like-ownmates/m-p/165646#M2001</link>
      <description>&lt;P&gt;I am creating a website where user can upload the pic but it will be automatically filter if the picture created by AI.&lt;/P&gt;&lt;P&gt;Some social website are using it&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1000095434.jpg" style="width: 720px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/30017i6BCDC5477D48621F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="1000095434.jpg" alt="1000095434.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt; #ai #artificial&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 22:25:31 GMT</pubDate>
      <guid>https://community.databricks.com/t5/generative-ai/how-to-use-ai-for-photo-filter-during-registration-like-ownmates/m-p/165646#M2001</guid>
      <dc:creator>C_45</dc:creator>
      <dc:date>2026-08-13T22:25:31Z</dc:date>
    </item>
    <item>
      <title>facing issue in llm models</title>
      <link>https://community.databricks.com/t5/generative-ai/facing-issue-in-llm-models/m-p/165636#M2000</link>
      <description>&lt;P&gt;&lt;SPAN&gt;i have signed up to databricks using aws but when i try to access model i m getting&amp;nbsp;error&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;Error (403): PERMISSION_DENIED: The endpoint is temporarily disabled due to a Databricks-set rate limit of 0.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 18:03:22 GMT</pubDate>
      <guid>https://community.databricks.com/t5/generative-ai/facing-issue-in-llm-models/m-p/165636#M2000</guid>
      <dc:creator>shrm80</dc:creator>
      <dc:date>2026-08-13T18:03:22Z</dc:date>
    </item>
    <item>
      <title>Excel Add-in Regression - Sign-in opens external browser window instead of embedding in task pane, r</title>
      <link>https://community.databricks.com/t5/get-started-discussions/excel-add-in-regression-sign-in-opens-external-browser-window/m-p/165635#M11995</link>
      <description>&lt;DIV class=""&gt;&lt;DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Issue:&lt;/STRONG&gt; The Databricks Excel Add-in launches authentication in an external browser window rather than within the Excel task pane. The Unity Catalog does display in the external browser window, but after sign-in, Excel remains stuck spinning/loading indefinitely.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Affected Platforms:&lt;/STRONG&gt; Reproduced on both Windows and macOS using Microsoft 365 Excel.&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Deployment Method:&lt;/STRONG&gt; The add-in is side-loaded through a custom XML manifest rather than deployed tenant-wide from the Microsoft Marketplace.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Troubleshooting Completed:&lt;/STRONG&gt;&lt;UL&gt;&lt;LI&gt;Verified and modified manifest trust and authentication settings.&lt;/LI&gt;&lt;LI&gt;Cleared Excel Web Extensions Framework (WEF) caches and reloaded the manifest.&lt;/LI&gt;&lt;LI&gt;Tested browser settings, pop-up permissions, cookies, and documented authentication workarounds.&lt;/LI&gt;&lt;LI&gt;Reproduced on multiple independent Windows and Mac installations.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Business Impact:&lt;/STRONG&gt; Users cannot refresh a recurring internal report through the add-in and must perform manual exports from the Databricks UI as a temporary workaround.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Suspected Cause:&lt;/STRONG&gt; The issue may be tied to an August 2026 update to the Databricks Excel Add-in that introduced new features such as cascading filters and Genie One integration. The timing aligns with the appearance of the authentication problem.&amp;nbsp;&amp;nbsp;&lt;A href="https://docs.databricks.com/aws/en/release-notes/product/2026/august" target="_blank" rel="noopener"&gt;https://docs.databricks.com/aws/en/release-notes/product/2026/august&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Request to Support:&lt;/STRONG&gt; Investigate the regression and provide any known workarounds or fixes.&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 13 Aug 2026 17:46:56 GMT</pubDate>
      <guid>https://community.databricks.com/t5/get-started-discussions/excel-add-in-regression-sign-in-opens-external-browser-window/m-p/165635#M11995</guid>
      <dc:creator>data_lover</dc:creator>
      <dc:date>2026-08-13T17:46:56Z</dc:date>
    </item>
    <item>
      <title>why micro-batching matters so much in Databricks Auto Loader and Structured Streaming</title>
      <link>https://community.databricks.com/t5/data-engineering/why-micro-batching-matters-so-much-in-databricks-auto-loader-and/m-p/165634#M55467</link>
      <description>&lt;P&gt;I recently spent some time understanding &lt;STRONG&gt;why micro-batching matters so much in Databricks Auto Loader and Structured Streaming&lt;/STRONG&gt;, and it changed the way I look at streaming pipelines.&lt;/P&gt;&lt;P&gt;Earlier, I used to think streaming meant processing every record the instant it arrived.&lt;/P&gt;&lt;P&gt;But in most analytical data pipelines, that is not really the requirement.&lt;/P&gt;&lt;P&gt;What matters more is processing new data continuously, reliably, and with a latency that matches the business need.&lt;/P&gt;&lt;P&gt;This is where micro-batching becomes very practical.&lt;/P&gt;&lt;P&gt;Instead of processing every record individually, Spark groups newly available data into small batches and processes them using its distributed engine.&lt;/P&gt;&lt;P&gt;That gives us a useful balance between batch efficiency and streaming behaviour.&lt;/P&gt;&lt;P&gt;For Auto Loader, this becomes even more important because the source is usually cloud object storage such as ADLS, S3, or GCS.&lt;/P&gt;&lt;P&gt;New files arrive over time, and Auto Loader identifies only the files that have not already been processed.&lt;/P&gt;&lt;P&gt;Those new files are then picked up in the next micro-batch.&lt;/P&gt;&lt;P&gt;What I found especially useful is how naturally this works with checkpoints.&lt;/P&gt;&lt;P&gt;A checkpoint keeps track of the progress of the streaming query.&lt;/P&gt;&lt;P&gt;So if a stream successfully processes some data and the cluster later stops or fails, Spark can restart from the last known state instead of reprocessing everything from the beginning.&lt;/P&gt;&lt;P&gt;That made checkpoints much easier for me to understand.&lt;/P&gt;&lt;P&gt;They are not just folders that we create because Structured Streaming asks for them.&lt;/P&gt;&lt;P&gt;They represent the state and progress of the stream.&lt;/P&gt;&lt;P&gt;Micro-batching also gives us a way to control how much data is processed at a time.&lt;/P&gt;&lt;P&gt;If a large number of files suddenly arrive, we do not necessarily want the pipeline to consume everything at once and put unnecessary pressure on the compute.&lt;/P&gt;&lt;P&gt;Instead, the workload can be distributed across multiple micro-batches.&lt;/P&gt;&lt;P&gt;This also creates an important cost and latency trade-off.&lt;/P&gt;&lt;P&gt;For example, in my GDELT project, I do not need a news article prediction within a few milliseconds.&lt;/P&gt;&lt;P&gt;If the data is processed within 30 seconds or one minute, that is still perfectly acceptable for the business use case.&lt;/P&gt;&lt;P&gt;So trying to build an ultra-low-latency architecture would add complexity without providing much additional value.&lt;/P&gt;&lt;P&gt;Another thing I learned is that micro-batching fits very naturally with the Medallion Architecture.&lt;/P&gt;&lt;P&gt;My Bronze ingestion has its own streaming state, while the Bronze-to-Silver processing has a separate checkpoint and recovery boundary.&lt;/P&gt;&lt;P&gt;That makes each stage easier to reason about independently.&lt;/P&gt;&lt;P&gt;If Bronze stops, I can restart Bronze from its checkpoint.&lt;/P&gt;&lt;P&gt;If Silver stops, Silver can continue independently from its own checkpoint.&lt;/P&gt;&lt;P&gt;This separation makes the overall pipeline much more manageable.&lt;/P&gt;&lt;P&gt;I also started seeing AvailableNow differently.&lt;/P&gt;&lt;P&gt;For many workloads, I may not need to keep a streaming query running continuously.&lt;/P&gt;&lt;P&gt;I can start the job, process all currently available data incrementally, update the checkpoint, and then allow the compute to stop.&lt;/P&gt;&lt;P&gt;For cost-sensitive workloads, that can be a very useful pattern.&lt;/P&gt;&lt;P&gt;The biggest change in my understanding was realizing that streaming is not simply a choice between “batch” and “real time.”&lt;/P&gt;&lt;P&gt;There is a spectrum.&lt;/P&gt;&lt;P&gt;Traditional batch processing works for large periodic workloads.&lt;/P&gt;&lt;P&gt;AvailableNow works well when data should be processed incrementally whenever a scheduled job runs.&lt;/P&gt;&lt;P&gt;Micro-batch streaming works well when seconds- or minutes-level latency is required.&lt;/P&gt;&lt;P&gt;Ultra-low-latency streaming is valuable only when the business genuinely needs millisecond-level responses.&lt;/P&gt;&lt;P&gt;For most analytical pipelines I am working with, especially Auto Loader with Bronze, Silver, and Gold layers, micro-batching feels like the practical middle ground.&lt;/P&gt;&lt;P&gt;It gives good throughput, checkpoint-based recovery, incremental processing, controlled workload size, and reasonable latency without forcing the system into unnecessary operational complexity.&lt;/P&gt;&lt;P&gt;That is why I now see micro-batching as one of the most important concepts to understand when learning Databricks Structured Streaming.&lt;/P&gt;&lt;P&gt;I would be interested to know how others decide between &lt;STRONG&gt;ProcessingTime, AvailableNow, and lower-latency streaming approaches&lt;/STRONG&gt; in production systems.&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 16:48:18 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/why-micro-batching-matters-so-much-in-databricks-auto-loader-and/m-p/165634#M55467</guid>
      <dc:creator>kartheek_rao</dc:creator>
      <dc:date>2026-08-13T16:48:18Z</dc:date>
    </item>
    <item>
      <title>End-to-End Streaming NLP Pipeline with GDELT, Azure Data Factory, ADLS Gen2 and Databricks</title>
      <link>https://community.databricks.com/t5/machine-learning/end-to-end-streaming-nlp-pipeline-with-gdelt-azure-data-factory/m-p/165633#M4662</link>
      <description>&lt;P class=""&gt;&lt;SPAN&gt;I have been working on a project to understand Databricks end to end, rather than just loading some data and training a model.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I picked &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;GDELT news data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; and the use case is to identify supply chain disruption related news and eventually predict which events could escalate.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I started by using &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;ADF to pull GDELT GKG files&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; and store the original ZIP files in ADLS.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Initially I did this with a single hardcoded file. Later I parameterized the pipeline, started reading the latest GDELT file information dynamically and added checks so the same file doesn't get ingested again.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;One thing I intentionally did was to keep ADF mostly for &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;data movement&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;, instead of doing transformations there.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Once the files were available in ADLS, I connected the storage with Databricks using &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Managed Identity + Access Connector + Unity Catalog external locations/volumes&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Then came the part which I really wanted to learn — &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Auto Loader and Structured Streaming&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;ADLS landing files are streamed into a Bronze Delta table. Bronze is intentionally almost raw and also stores things like source filename, ingestion timestamp and source path.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I created a separate &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;checkpoint location&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; for this stream.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;This was probably one of the most useful things I learnt because earlier checkpoint was just another Spark term for me. After actually stopping the stream, starting it again and seeing that previously processed files were not processed again, it made much more sense.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;From Bronze I created another stream going into Silver.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Here I parse the GDELT records and create proper article level fields like title, published time, URL, domain, themes, organisations, locations, tone etc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;So now if a new file arrives in ADLS, it can move through:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Auto Loader → Bronze → Silver&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; incrementally.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;For the ML side, I created a versioned dataset from Silver.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I am starting with &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;TF-IDF + Logistic Regression as a baseline&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;, but I don't want the NLP part to stop there. The plan is to compare it with transformer models like DistilBERT/DeBERTa, embeddings, NER and eventually story clustering.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;For expensive training/HPO I am also experimenting with cheaper GPU compute outside Databricks instead of unnecessarily keeping Databricks compute running for hours.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But the model comes back to Databricks.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;That is where I want to use &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;MLflow, Unity Catalog Model Registry, model versions and production inference&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;The final goal is that whenever a new GDELT file comes:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;new article → Bronze → Silver → registered model → prediction.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Predictions will be stored in Delta/Gold tables and also written back to an &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;ADLS backed location&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; so other systems outside Databricks can consume them.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Still a lot left to build, specially around embeddings, clustering and escalation prediction, but this project has already changed how I look at ML projects.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Earlier I mostly thought:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;data → model → prediction&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Now I'm thinking more about ingestion, checkpoints, replayability, governance, model lifecycle and how the prediction actually runs when new data comes in.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Would love to hear from people working with Databricks — anything you would design differently in this architecture?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#Databricks #Azure #ADF #ADLS #PySpark #StructuredStreaming #AutoLoader #DeltaLake #UnityCatalog #MLflow #NLP #MLOps #GDELT&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 16:31:55 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/end-to-end-streaming-nlp-pipeline-with-gdelt-azure-data-factory/m-p/165633#M4662</guid>
      <dc:creator>kartheek_rao</dc:creator>
      <dc:date>2026-08-13T16:31:55Z</dc:date>
    </item>
    <item>
      <title>How to extract data from SAP to Databricks?</title>
      <link>https://community.databricks.com/t5/data-engineering/how-to-extract-data-from-sap-to-databricks/m-p/165632#M55466</link>
      <description>&lt;P class=""&gt;Hey everyone, I'm working through a project where I need to get data out of SAP S4Hana and into Databricks, and I'd love to pick the brains of anyone who's done this before.&lt;/P&gt;&lt;P class=""&gt;A few things I'm trying to figure out:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;How are you actually pulling the data out? CDS views, ODP extractors, some third party connector, or a custom build?&lt;/LI&gt;&lt;LI&gt;Are you going real time (Kafka/CDC style) or is scheduled batch working fine for your use case?&lt;/LI&gt;&lt;LI&gt;What's bitten you the most? Schema changes breaking things, SAP getting cranky under load, latency, something else entirely?&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;We're dealing with decent volume on our end and really don't want to hammer the SAP source system, so reliability matters more to us than raw speed. If you've been through this, I'd really appreciate hearing what worked (and what didn't).&lt;/P&gt;&lt;P class=""&gt;Thanks in advance!&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 16:25:01 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-to-extract-data-from-sap-to-databricks/m-p/165632#M55466</guid>
      <dc:creator>RaulTovar</dc:creator>
      <dc:date>2026-08-13T16:25:01Z</dc:date>
    </item>
    <item>
      <title>End-to-End Streaming NLP Pipeline with GDELT, Azure Data Factory, ADLS Gen2 and Databricks</title>
      <link>https://community.databricks.com/t5/machine-learning/end-to-end-streaming-nlp-pipeline-with-gdelt-azure-data-factory/m-p/165627#M4661</link>
      <description>&lt;H1&gt;Building an End-to-End Streaming NLP Pipeline with GDELT, Azure Data Factory, ADLS Gen2 and Databricks&lt;/H1&gt;&lt;P&gt;I recently worked on an end-to-end streaming NLP project using &lt;STRONG&gt;GDELT news data&lt;/STRONG&gt;, Azure Data Factory, ADLS Gen2 and Azure Databricks.&lt;/P&gt;&lt;P&gt;The goal was not just to train an NLP model. I wanted to understand the complete lifecycle:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;external data ingestion → durable cloud storage → streaming ingestion → Bronze/Silver processing → NLP training and HPO → model registration → streaming inference → predictions → ADLS&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The architecture evolved into:&lt;/P&gt;&lt;PRE&gt;GDELT
  ↓
Azure Data Factory
  ↓
ADLS Gen2
  ├── raw/compressed
  └── landing/extracted
  ↓
Unity Catalog External Location / Volume
  ↓
Databricks Auto Loader
  ↓
Bronze Delta
  ↓
Structured Streaming
  ↓
Silver Delta
  ↓
NLP Training + HPO
  ↓
MLflow / Unity Catalog Model Registry
  ↓
Streaming Model Inference
  ↓
Prediction Delta Tables
  ↓
ADLS Gen2&lt;/PRE&gt;&lt;H2&gt;1. Acquiring GDELT data&lt;/H2&gt;&lt;P&gt;GDELT publishes multiple datasets at regular intervals, including:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Events&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Event Mentions&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Global Knowledge Graph — GKG&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;For the NLP component, I started with the &lt;STRONG&gt;GKG dataset&lt;/STRONG&gt;, because it provides useful article-level metadata such as:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;article URL&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;themes&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;organizations&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;people&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;locations&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;tone&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;article title through the GKG Extras field&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Instead of making Databricks responsible for downloading data from the internet, I separated the acquisition layer from the processing layer.&lt;/P&gt;&lt;P&gt;I used &lt;STRONG&gt;Azure Data Factory&lt;/STRONG&gt; for acquisition.&lt;/P&gt;&lt;P&gt;The initial flow was:&lt;/P&gt;&lt;PRE&gt;GDELT HTTP endpoint
       ↓
ADF Binary Copy
       ↓
ADLS Gen2&lt;/PRE&gt;&lt;P&gt;I first tested the architecture with one GKG file.&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;20260802103000.gkg.csv.zip&lt;/PRE&gt;&lt;P&gt;ADF copied the original compressed file into:&lt;/P&gt;&lt;PRE&gt;raw/compressed/gkg/
ingestion_date=YYYY-MM-DD/&lt;/PRE&gt;&lt;P&gt;The original ZIP was deliberately preserved.&lt;/P&gt;&lt;P&gt;This became important later because it gave the pipeline:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;replayability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;traceability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;debugging capability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;separation between acquisition and transformation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ADF then decompressed the ZIP into:&lt;/P&gt;&lt;PRE&gt;landing/extracted/gkg/
ingestion_date=YYYY-MM-DD/&lt;/PRE&gt;&lt;P&gt;The guiding principle was:&lt;/P&gt;&lt;PRE&gt;ADF = acquire and land
ADLS = preserve
Databricks = process and model&lt;/PRE&gt;&lt;H2&gt;2. Making ADF ingestion dynamic&lt;/H2&gt;&lt;P&gt;The first pipeline used a fixed GDELT filename.&lt;/P&gt;&lt;P&gt;After proving that one file could move successfully from GDELT to ADLS, I parameterized the pipeline.&lt;/P&gt;&lt;P&gt;I added parameters for:&lt;/P&gt;&lt;PRE&gt;file_name
ingestion_date
expected_size
checksum&lt;/PRE&gt;&lt;P&gt;Then I used GDELT's latest-file information to automatically identify the newest GKG file.&lt;/P&gt;&lt;P&gt;ADF performed:&lt;/P&gt;&lt;PRE&gt;Lookup latest GDELT metadata
        ↓
Filter GKG entry
        ↓
Extract filename
        ↓
Derive ingestion date
        ↓
Check whether file already exists
        ↓
Ingest only if new&lt;/PRE&gt;&lt;P&gt;This introduced an important engineering property:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;idempotency.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Rerunning the pipeline would not continually ingest the same file.&lt;/P&gt;&lt;H2&gt;3. Simulating streaming without running 24×7&lt;/H2&gt;&lt;P&gt;Because this was a learning project, I did not want to keep cloud compute running continuously.&lt;/P&gt;&lt;P&gt;Instead, I created controlled streaming sessions.&lt;/P&gt;&lt;P&gt;The ADF pipeline was configured to collect approximately three consecutive GDELT files.&lt;/P&gt;&lt;P&gt;Conceptually:&lt;/P&gt;&lt;PRE&gt;File 1
  ↓
Wait
  ↓
File 2
  ↓
Wait
  ↓
File 3
  ↓
Stop&lt;/PRE&gt;&lt;P&gt;The session used:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;an Until loop&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;a target-file count&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Wait activities&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;file-existence checks&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;a maximum session timeout&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;This allowed me to learn near-real-time ingestion while keeping infrastructure costs under control.&lt;/P&gt;&lt;H2&gt;4. Connecting ADLS securely to Databricks&lt;/H2&gt;&lt;P&gt;Instead of using storage keys or legacy DBFS mounts, I connected ADLS using:&lt;/P&gt;&lt;PRE&gt;Databricks Access Connector
        ↓
Managed Identity
        ↓
Unity Catalog Storage Credential
        ↓
External Location
        ↓
External Volume&lt;/PRE&gt;&lt;P&gt;This exposed the ADLS landing data through a governed path such as:&lt;/P&gt;&lt;PRE&gt;/Volumes/gdelt_dev/raw/gdelt_landing/&lt;/PRE&gt;&lt;P&gt;One of the most useful concepts I learned here was that /Volumes/... is a Databricks governed view over the underlying cloud storage.&lt;/P&gt;&lt;P&gt;The physical data still lives in ADLS.&lt;/P&gt;&lt;H2&gt;5. Streaming ADLS files into Bronze using Auto Loader&lt;/H2&gt;&lt;P&gt;The next layer was Databricks Auto Loader.&lt;/P&gt;&lt;PRE&gt;ADLS landing
      ↓
Unity Catalog Volume
      ↓
cloudFiles
      ↓
Structured Streaming
      ↓
Bronze Delta&lt;/PRE&gt;&lt;P&gt;I deliberately kept Bronze close to the source.&lt;/P&gt;&lt;P&gt;Instead of doing all business parsing immediately, the Bronze table stored:&lt;/P&gt;&lt;PRE&gt;raw_record
source_file_name
source_file_path
source_file_size
source_file_modification_time
ingested_at
ingestion_date&lt;/PRE&gt;&lt;P&gt;Auto Loader used a dedicated checkpoint:&lt;/P&gt;&lt;PRE&gt;checkpoints/bronze_gkg/&lt;/PRE&gt;&lt;P&gt;and a separate schema location.&lt;/P&gt;&lt;P&gt;The checkpoint became one of the most important concepts in the project.&lt;/P&gt;&lt;P&gt;It allows the stream to remember:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;Which source files have already been successfully processed?&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I could stop the Databricks cluster, restart it later and use the same checkpoint.&lt;/P&gt;&lt;P&gt;The stream continued from its previous progress rather than starting from scratch.&lt;/P&gt;&lt;H2&gt;6. Bronze to Silver streaming&lt;/H2&gt;&lt;P&gt;Once the raw GKG records were reliably landing in Bronze, I created another Structured Streaming pipeline:&lt;/P&gt;&lt;PRE&gt;Bronze Delta
    ↓
readStream
    ↓
GKG parsing
    ↓
cleaning
    ↓
Silver Delta&lt;/PRE&gt;&lt;P&gt;The GKG records were tab-delimited.&lt;/P&gt;&lt;P&gt;In Silver I parsed the useful fields and produced article-level features such as:&lt;/P&gt;&lt;PRE&gt;article_id
published_at
article_url
source_domain
title
tone
themes
organizations
persons
locations&lt;/PRE&gt;&lt;P&gt;The article title was extracted from the GKG Extras field.&lt;/P&gt;&lt;P&gt;Silver also performed operations such as:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;timestamp conversion&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;URL/domain extraction&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;HTML title decoding&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;theme preparation&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;exact duplicate checks&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;malformed-record filtering&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Importantly, Silver used a &lt;STRONG&gt;different checkpoint&lt;/STRONG&gt; from Bronze.&lt;/P&gt;&lt;P&gt;So the architecture had independent state:&lt;/P&gt;&lt;PRE&gt;ADLS → Bronze checkpoint

Bronze → Silver checkpoint&lt;/PRE&gt;&lt;P&gt;At this stage I had a genuine multi-hop streaming architecture:&lt;/P&gt;&lt;PRE&gt;ADF lands file
      ↓
Auto Loader detects it
      ↓
Bronze updates
      ↓
Silver streaming query detects new Bronze rows
      ↓
Silver updates&lt;/PRE&gt;&lt;H2&gt;7. Preparing the NLP dataset&lt;/H2&gt;&lt;P&gt;From Silver I created an NLP-oriented profile dataset containing fields such as:&lt;/P&gt;&lt;PRE&gt;article_id
published_at
article_url
source_domain
title
title_normalized
tone
themes_clean
organizations
persons
locations&lt;/PRE&gt;&lt;P&gt;A versioned snapshot was then created for reproducibility.&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;article_nlp_profile_v001&lt;/PRE&gt;&lt;P&gt;I exported this snapshot as Parquet into a dedicated ADLS ML exchange area:&lt;/P&gt;&lt;PRE&gt;ml_exchange/
└── relevance/
    ├── datasets/
    └── models/&lt;/PRE&gt;&lt;P&gt;This provided a clean boundary between the governed Databricks data platform and the training environment.&lt;/P&gt;&lt;H2&gt;8. NLP modelling strategy&lt;/H2&gt;&lt;P&gt;I deliberately did not jump directly to BERT.&lt;/P&gt;&lt;P&gt;I structured the modelling as a progression.&lt;/P&gt;&lt;H3&gt;Baseline&lt;/H3&gt;&lt;PRE&gt;Title
 ↓
TF-IDF
 ↓
Logistic Regression&lt;/PRE&gt;&lt;P&gt;The purpose of the baseline was not to create the final model.&lt;/P&gt;&lt;P&gt;It established a benchmark.&lt;/P&gt;&lt;P&gt;Any more complicated transformer model needed to demonstrate that the additional complexity provided measurable value.&lt;/P&gt;&lt;H3&gt;Deep NLP&lt;/H3&gt;&lt;P&gt;The next models used pretrained transformer encoders for supply-chain relevance classification.&lt;/P&gt;&lt;P&gt;The progression included experiments such as:&lt;/P&gt;&lt;PRE&gt;TF-IDF
   ↓
DistilBERT
   ↓
DeBERTa / modern encoder models&lt;/PRE&gt;&lt;P&gt;The classification target was conceptually:&lt;/P&gt;&lt;PRE&gt;1 = supply-chain disruption
0 = not a supply-chain disruption&lt;/PRE&gt;&lt;P&gt;The project was designed to eventually extend beyond binary classification into:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;disruption-category classification&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;named entity recognition&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;semantic embeddings&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;duplicate detection&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;story clustering&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;escalation prediction&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;H2&gt;9. Training and Hyperparameter Optimization&lt;/H2&gt;&lt;P&gt;An important architectural decision was not to make the expensive training environment the centre of the platform.&lt;/P&gt;&lt;P&gt;Databricks remained the system of record.&lt;/P&gt;&lt;P&gt;Training/HPO could use lower-cost external GPU compute where appropriate.&lt;/P&gt;&lt;P&gt;The pattern became:&lt;/P&gt;&lt;PRE&gt;Databricks
 ↓
Versioned training dataset
 ↓
ADLS ML Exchange
 ↓
GPU training/HPO
 ↓
Best model artefact
 ↓
ADLS
 ↓
Databricks&lt;/PRE&gt;&lt;P&gt;For HPO I focused on parameters that materially affect transformer performance, for example:&lt;/P&gt;&lt;PRE&gt;learning rate
batch size
epochs
weight decay
warmup ratio
max sequence length&lt;/PRE&gt;&lt;P&gt;Model selection used more than accuracy.&lt;/P&gt;&lt;P&gt;For an early-warning problem, metrics such as these are more useful:&lt;/P&gt;&lt;PRE&gt;Precision
Recall
F1
PR-AUC
Precision@K
Recall@K&lt;/PRE&gt;&lt;H2&gt;10. Bringing the model back into Databricks&lt;/H2&gt;&lt;P&gt;The best model was not left in the training notebook.&lt;/P&gt;&lt;P&gt;The model artefact, configuration and evaluation metadata were returned to Databricks.&lt;/P&gt;&lt;P&gt;The model bundle included information such as:&lt;/P&gt;&lt;PRE&gt;model
best parameters
validation metrics
dataset version
feature schema
library requirements
training notes&lt;/PRE&gt;&lt;P&gt;Then Databricks became responsible again for the production lifecycle:&lt;/P&gt;&lt;PRE&gt;Best model
   ↓
MLflow
   ↓
Model evaluation
   ↓
Unity Catalog Model Registry
   ↓
Champion model&lt;/PRE&gt;&lt;P&gt;This separation was intentional.&lt;/P&gt;&lt;P&gt;Training compute could be disposable.&lt;/P&gt;&lt;P&gt;The governed model lifecycle remained in Databricks.&lt;/P&gt;&lt;H2&gt;11. Driving streaming predictions&lt;/H2&gt;&lt;P&gt;This was the point where the data-engineering and ML parts of the project came together.&lt;/P&gt;&lt;P&gt;The production inference path became:&lt;/P&gt;&lt;PRE&gt;New GDELT file
      ↓
ADF
      ↓
ADLS
      ↓
Auto Loader
      ↓
Bronze
      ↓
Silver
      ↓
Registered ML model
      ↓
Prediction&lt;/PRE&gt;&lt;P&gt;For every newly processed article, the model generates something conceptually similar to:&lt;/P&gt;&lt;PRE&gt;article_id
prediction_timestamp
model_version
relevance_probability
predicted_label&lt;/PRE&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;Title:
"Port workers announce nationwide strike"

Supply-chain disruption probability:
0.94

Prediction:
Relevant&lt;/PRE&gt;&lt;P&gt;Only relevant articles need to continue into more expensive downstream NLP:&lt;/P&gt;&lt;PRE&gt;Relevant article
      ↓
Disruption category
      ↓
Entity extraction
      ↓
Embeddings
      ↓
Semantic duplicate detection
      ↓
Story clustering&lt;/PRE&gt;&lt;P&gt;This is also useful for cost optimization because expensive NLP is performed only on the subset of records that passes the relevance model.&lt;/P&gt;&lt;H2&gt;12. Persisting predictions back into ADLS&lt;/H2&gt;&lt;P&gt;Predictions are first written into governed Delta tables.&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;gdelt_dev.ml.article_relevance_predictions&lt;/PRE&gt;&lt;P&gt;or later:&lt;/P&gt;&lt;PRE&gt;gdelt_dev.gold.active_alerts&lt;/PRE&gt;&lt;P&gt;The output contains both prediction data and lineage:&lt;/P&gt;&lt;PRE&gt;article_id
source_file
prediction_timestamp
model_name
model_version
probability
predicted_class
processing_run_id&lt;/PRE&gt;&lt;P&gt;Where external Azure consumers require the prediction output, the data can then be exported through a Unity Catalog External Volume backed by ADLS:&lt;/P&gt;&lt;PRE&gt;Databricks Delta prediction
        ↓
Gold/serving transformation
        ↓
External Volume
        ↓
ADLS&lt;/PRE&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;abfss://gdelt@&amp;lt;storage-account&amp;gt;.dfs.core.windows.net/
predictions/relevance/&lt;/PRE&gt;&lt;P&gt;This completes the round trip:&lt;/P&gt;&lt;PRE&gt;GDELT
 ↓
Azure
 ↓
Databricks
 ↓
Machine Learning
 ↓
Databricks predictions
 ↓
Azure&lt;/PRE&gt;&lt;H2&gt;13. What I learned from this architecture&lt;/H2&gt;&lt;P&gt;The biggest learning for me was that an ML project is much larger than model.fit().&lt;/P&gt;&lt;P&gt;I had to think about:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Data engineering&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;external acquisition&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;ADF&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;ADLS Gen2&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;immutable raw storage&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;idempotency&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;replayability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;parameterized pipelines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Streaming&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Auto Loader&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Structured Streaming&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;processing-time triggers&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;checkpoints&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;restart behaviour&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Bronze → Silver incremental processing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Governance&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;managed identities&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Unity Catalog&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;external locations&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Volumes&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;lineage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;NLP&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;TF-IDF baselines&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;transformer fine-tuning&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;contextual embeddings&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;classification&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;semantic similarity&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Machine learning&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;labelled datasets&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;time-aware evaluation&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;HPO&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;class imbalance&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;PR-AUC&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;threshold selection&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;MLOps&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;dataset versioning&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;MLflow&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Model Registry&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;model versions&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;production inference&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;prediction lineage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Cost engineering&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I also intentionally avoided running everything 24×7.&lt;/P&gt;&lt;P&gt;The same architectural concepts can be learned using controlled streaming sessions:&lt;/P&gt;&lt;PRE&gt;start resources
→ process several GDELT intervals
→ observe streaming behaviour
→ validate output
→ gracefully stop streams
→ terminate compute&lt;/PRE&gt;&lt;P&gt;That allowed me to learn the architecture without turning a personal learning project into an unnecessarily expensive cloud workload.&lt;/P&gt;&lt;H2&gt;What comes next&lt;/H2&gt;&lt;P&gt;The next stages are focused on making the intelligence layer deeper:&lt;/P&gt;&lt;PRE&gt;Relevance classification
        ↓
Disruption-category classification
        ↓
NER / entity normalization
        ↓
Sentence embeddings
        ↓
Semantic duplicate detection
        ↓
Story clustering
        ↓
Temporal feature engineering
        ↓
Predict whether a story will escalate
        ↓
Ranked supply-chain disruption alerts&lt;/PRE&gt;&lt;P&gt;For me, the most valuable part of this project has been connecting all the pieces rather than treating data engineering, NLP and MLOps as separate subjects.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ADF acquires the data.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ADLS preserves it.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Databricks streams and governs it.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ML models extract intelligence from it.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;MLflow governs the model lifecycle.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;And the prediction pipeline turns continuously arriving data into actionable outputs.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;#Azure #AzureDataFactory #ADLS #Databricks #ApacheSpark #PySpark #StructuredStreaming #AutoLoader #DeltaLake #UnityCatalog #MLflow #NLP #BERT #MachineLearning #MLOps #DataEngineering #GDELT&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 16:10:17 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/end-to-end-streaming-nlp-pipeline-with-gdelt-azure-data-factory/m-p/165627#M4661</guid>
      <dc:creator>kartheek_rao</dc:creator>
      <dc:date>2026-08-13T16:10:17Z</dc:date>
    </item>
  </channel>
</rss>

