{"allowedRenditionsWidth":["320","480","640","768","960","1200","1440","1920"],"templateName":"blog-page","cssClassNames":"blog-page page basicpage summit-page","canonicalLink":"https://www.snowflake.com/it/blog/snowpipe-streaming-iceberg-tables/","robotsTags":["index","follow"],"description":"Scopri come inviare dati in streaming nelle tabelle Apache Iceberg gestite da Snowflake con Snowpipe Streaming.","language":"it","title":"Streaming dei dati in Apache Iceberg con Snowflake","analyticsPageType":"homepage","analyticsCategory":"general","analyticsSubCategory":"","excludeFromAnalytics":false,"coveoConfig":{"organizationId":"snowflakecomputingproduction8neljofn","apiKey":"xx335921a6-2a0a-40f2-a167-e390b4766c3d","pipeline":"snowflake.com","searchHub":"snowflake.com"},"analyticsDebugMode":false,"analyticsData":{"excludeFromAnalytics":false,"subCategory":"","pageType":"homepage","templateName":"blog-page","siteName":"snowflake","pageUrl":"/content/snowflake-site/global/it/blog/snowpipe-streaming-iceberg-tables","language":"it","category":"general","pageName":"Semplifica lo streaming su Apache Iceberg con Snowpipe Streaming","contentTags":["snowflake-site:taxonomy/blog/product-and-technology/data-engineering","snowflake-site:taxonomy/product/data-engineering","snowflake-site:taxonomy/snowflake-feature/apache-iceberg","snowflake-site:taxonomy/snowflake-feature/ingestion"]},":items":{"root":{"columnClassNames":{"experiencefragment-banner":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-sub-header":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-pre-footer":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-header":"aem-GridColumn aem-GridColumn--default--12","markup_editor-table":"aem-GridColumn aem-GridColumn--default--12","responsivegrid":"aem-GridColumn aem-GridColumn--default--12","experiencefragment-footer":"aem-GridColumn aem-GridColumn--default--12","markup_editor":"aem-GridColumn aem-GridColumn--default--12","container_47873732":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnCount":12,":items":{"experiencefragment-banner":{"id":"experiencefragment-2f607105c0","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/pushdown-banner/pushdown-banner-blank/jcr:content","configured":true,"xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/pushdown-banner/pushdown-banner-blank.xfmodel.json",":type":"snowflake-site/components/experiencefragment"},"experiencefragment-header":{"id":"experiencefragment-ffe7cc7d13","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/it/site/mega-nav-header/master/jcr:content","configured":true,"xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/it/site/mega-nav-header/master.xfmodel.json","languageNavPath":"/content/snowflake-site/global/it/blog/snowpipe-streaming-iceberg-tables.languagenav.json",":type":"snowflake-site/components/experiencefragment","appliedCssClassNames":"snowflake-sticky-nav-host"},"experiencefragment-sub-header":{"id":"experiencefragment-8344df16da","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/it/site/sub-navigation/master/jcr:content","configured":true,"xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/it/site/sub-navigation/master.xfmodel.json",":type":"snowflake-site/components/experiencefragment"},"responsivegrid":{"columnClassNames":{"container_breadcrumb":"aem-GridColumn aem-GridColumn--default--12","container_main_content":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnCount":12,":items":{"container_breadcrumb":{"columnClassNames":{"breadcrumb":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","layout":"RESPONSIVE_GRID","columnCount":12,"id":"blog-page-breadcrumb-indentation",":items":{"breadcrumb":{"id":"breadcrumb-5da315e493","breadcrumbItems":[{"title":"Blog","path":"/it/blog/","active":false},{"title":"Data engineering","active":false},{"title":"Semplifica lo streaming su Apache Iceberg con Snowpipe Streaming","path":"/it/blog/snowpipe-streaming-iceberg-tables/","active":false}],":type":"snowflake-site/components/blog/breadcrumb"}},":itemsOrder":["breadcrumb"],"appliedCssClassNames":"snowflake-container",":type":"snowflake-site/components/container"},"container_main_content":{"columnClassNames":{"flexible_column_container":"aem-GridColumn aem-GridColumn--default--12","related_content":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","layout":"RESPONSIVE_GRID","columnCount":12,"id":"main-content",":items":{"flexible_column_container":{"id":"flexible-column-container-f4cb940bfd","propertiesId":"snowflake-blog-template-main-container","type":"2-column-60-40","alignColumns":"top","containerMaxWidth":"extra-large","topPadding":"none","bottomPadding":"none","spaceBetween":"none","reverseOnMobile":true,"carouselOnMobile":false,"backgroundImageOption":"none","flexible_column_content_container_1":{"layout":"SIMPLE","id":"container-4db94cf5b5",":items":{"container_hero":{"columnClassNames":{"blog_hero":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-7556520f00",":items":{"blog_hero":{"id":"blog-hero-f9d99e2ecf","showClaude":true,"showChatGpt":true,"timeToRead":"8","publicationDate":"AUG 24, 2026","image":{"id":"image-bab6366087","isLcpImage":false,"lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--240c94d4-d33e-4acb-8da2-bcbe0d06a778/sf-eng-blog-ml-2.png?preferwebp=true&quality=85","width":"1680","height":"720",":type":"snowflake-site/components/image"},"authors":[{"authorImage":{"id":"image-e52e3b6ded","isLcpImage":false,"alt":"Headshot of Dave Matthews","lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--ebf3baf3-b763-4b40-9263-11d6bc388488/dave-matthews.jpg?preferwebp=true&quality=85","width":"192","height":"192",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-e0efe38ce4","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/dave-matthews/"},"linkTargetContentType":"DOCUMENT_LEARN","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Dave Matthews"}}],"tag":{"tagText":"Data engineering","tagColor":"#29B5E8"},"title":{"lines":["Semplifica lo streaming su Apache Iceberg con Snowpipe Streaming"],"type":"heading2",":type":"snowflake-site/components/title-v2"},":type":"snowflake-site/components/blog/blog-hero"}},":itemsOrder":["blog_hero"],":type":"snowflake-site/components/container"},"responsivegrid_content":{"columnClassNames":{"blog_component_29":"aem-GridColumn aem-GridColumn--default--12","blog_component_26":"aem-GridColumn aem-GridColumn--default--12","blog_component_25":"aem-GridColumn aem-GridColumn--default--12","blog_component_24":"aem-GridColumn aem-GridColumn--default--12","blog_component_23":"aem-GridColumn aem-GridColumn--default--12","blog_component_11":"aem-GridColumn aem-GridColumn--default--12","blog_component_10":"aem-GridColumn aem-GridColumn--default--12","blog_component_32":"aem-GridColumn aem-GridColumn--default--12","blog_component_31":"aem-GridColumn aem-GridColumn--default--12","blog_component_30":"aem-GridColumn aem-GridColumn--default--12","blog_text":"aem-GridColumn aem-GridColumn--default--12","blog_component_1":"aem-GridColumn aem-GridColumn--default--12","blog_component_2":"aem-GridColumn aem-GridColumn--default--12","blog_component_0":"aem-GridColumn aem-GridColumn--default--12","blog_component_5":"aem-GridColumn aem-GridColumn--default--12","blog_component_6":"aem-GridColumn aem-GridColumn--default--12","blog_component_3":"aem-GridColumn aem-GridColumn--default--12","blog_component_4":"aem-GridColumn aem-GridColumn--default--12","blog_component_9":"aem-GridColumn aem-GridColumn--default--12","blog_component_7":"aem-GridColumn aem-GridColumn--default--12","blog_component_17":"aem-GridColumn aem-GridColumn--default--12","blog_component_8":"aem-GridColumn aem-GridColumn--default--12","blog_component_16":"aem-GridColumn aem-GridColumn--default--12","blog_component_14":"aem-GridColumn aem-GridColumn--default--12","blog_component_13":"aem-GridColumn aem-GridColumn--default--12","blog_component_12":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnCount":12,"appliedCssClassNames":"snowflake-layout-container-inner-padding-small",":items":{"blog_component_0":{"id":"blog-title-8a3b32c059","propertiesId":"valutare-lo-streaming-su-larga-scala-senza-oneri-infrastrutturali","type":"heading2","lines":["Valutare lo streaming su larga scala senza oneri infrastrutturali"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_1":{"id":"blog-text-930a67f3d6","text":"\u003Cp\u003E\u003Cstrong\u003ESe il tuo team vuole capire se Snowpipe Streaming regge oltre 1 milione di TPS, serve la via più breve per una risposta concreta.\u003C/strong\u003E Lo streaming su larga scala ha una certa fama. È il workload che i team rimandano sempre, perché metterlo in piedi significa bucket S3, un cluster EKS, topic Kafka, policy IAM, una revisione di sicurezza e l’approvazione di tre team di piattaforma, ognuno con il proprio backlog. Questa configurazione può richiedere provisioning infrastrutturale aggiuntivo e attività di coordinamento prima ancora di iniziare i test. Dimostrare che queste pipeline funzionano su larga scala e gestiscono i volumi di produzione è di solito un progetto a sé.\u003C/p\u003E\u003Cp\u003ENel nostro ambiente demo abbiamo configurato ed eseguito questa valutazione in un pomeriggio. Puoi usare la nostra \u003Ca href=\"https://www.snowflake.com/en/product/features/snowpipe-streaming/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003Earchitettura ad alte prestazioni di Snowpipe Streaming\u003C/a\u003E per inviare dati in streaming nel \u003Ca href=\"https://www.snowflake.com/en/developers/guides/apache-iceberg-snowflake-open-catalog-snowpipe-streaming/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003Eformato Apache Iceberg™\u003C/a\u003E a oltre 1 milione di TPS, interamente all’interno dell’infrastruttura Snowflake. Un container in esecuzione in Snowpark Container Services (SPCS) genera il carico, lo invia in streaming attraverso l’SDK e lo scrive in una Iceberg Table gestita da Snowflake. Così i dati sono immediatamente pronti per l’esecuzione di query in Snowflake, con controllo degli accessi basato sui ruoli (RBAC), lineage e masking applicati già in fase di arrivo. Nel nostro ambiente di test abbiamo allestito la demo, l’abbiamo testata end to end, misurato il throughput e smantellato tutto in un pomeriggio, come è avvenuto nel nostro test.\u003C/p\u003E\u003Cp\u003EQuesto post ti guida passo per passo nello sviluppo di una demo di streaming end to end verso Iceberg, usando questo \u003Ca href=\"https://github.com/sfc-gh-damatthews/streaming-snowpipe-to-iceberg\" target=\"_blank\" rel=\"noopener noreferrer\"\u003Erepository GitHub\u003C/a\u003E. Questo esempio è in Python, ma puoi testare tutte le opzioni SDK (Java, Python, Node, REST), così da poter proporre la soluzione al business con risultati concreti alla mano.\u003C/p\u003E","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_2":{"id":"blog-title-b41b5d6711","propertiesId":"diagramma-dellarchitettura-il-pattern","type":"heading2","lines":["Diagramma dell’architettura: il pattern"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_3":{"id":"blog-text-df73ac7e3a","text":"\u003Cp\u003EVolevamo sviluppare una demo in cui tutto gira all’interno dell’infrastruttura Snowflake. Più container Docker in esecuzione in Snowpark Container Services (\u003Ca href=\"https://docs.snowflake.com/en/developer-guide/snowpark-container-services/overview\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ESPCS\u003C/a\u003E) generano dati di test sintetici al numero di transazioni al secondo desiderato e li inviano in streaming tramite l’\u003Ca href=\"https://docs.snowflake.com/en/user-guide/snowpipe-streaming/data-load-snowpipe-streaming-overview\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ESDK Snowpipe Streaming\u003C/a\u003E. I dati arrivano in una \u003Ca href=\"https://docs.snowflake.com/en/user-guide/tables-iceberg-internal-storage\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EIceberg Table gestita da Snowflake\u003C/a\u003E: formato open, interrogabile pochi secondi dopo l’arrivo, governato in Snowflake. L’autenticazione è semplice: SPCS inserisce nel container un token OAuth di breve durata e indica allo Streaming SDK di utilizzarlo. Non devi gestire alcun secret.\u003C/p\u003E","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_4":{"id":"image-2f2d043b60","isLcpImage":true,"alt":"Snowflake architecture diagram showing SPCS Service load generator streaming data to Iceberg Table via Snowpipe","lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--f98e7889-9a46-4311-aa7f-bc9962d0b362/snowflake-architecture-diagram-showing-spcs-service-load.png?preferwebp=true&quality=85","width":"1508","height":"676","title":"Figura 1: da Snowpark Container Service a Iceberg",":type":"snowflake-site/components/image"},"blog_component_5":{"id":"blog-title-bad34686c9","propertiesId":"perche-usare-spcs-per-generare-il-carico","type":"heading2","lines":["Perché usare SPCS per generare il carico?"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_6":{"id":"blog-text-ca61ff3a05","text":"\u003Cp\u003EChiariamo subito: Snowpipe Streaming non ha bisogno di SPCS. L’SDK gira ovunque: il tuo laptop, un’istanza EC2, un pod Kubernetes.\u003C/p\u003E\u003Cp\u003EMetterlo in SPCS ti porta al test più rapidamente, perché il servizio gira interamente su un’infrastruttura già gestita da Snowflake, senza nulla di nuovo da provisionare né approvazioni aggiuntive da gestire per il test stesso.\u003C/p\u003E","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_7":{"id":"blog-title-c41bd60763","propertiesId":"scrivere-direttamente-in-iceberg","type":"heading2","lines":["Scrivere direttamente in Iceberg"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_8":{"id":"blog-text-fe3496c8a5","text":"\u003Cp\u003EIl target è una Iceberg Table gestita da Snowflake. Le righe arrivano in streaming attraverso l’SDK e si materializzano come file Parquet con metadati Iceberg, gestiti da Snowflake. Se vuoi, più avanti puoi puntarla a un tuo volume esterno S3, oppure lasciarla gestita da Snowflake dopo la valutazione. Il codice resta lo stesso in entrambi i casi.\u003C/p\u003E\u003Cp\u003EPer la valutazione significa meno configurazione. Una tabella su storage gestito da Snowflake ti evita il volume esterno, l’integrazione dello storage e i permessi di cloud storage che altrimenti dovresti configurare prima.\u003C/p\u003E\u003Cp\u003EQuando sei pronto per il passaggio in produzione, hai tre strade chiare:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003EIceberg gestito da Snowflake con volume esterno:\u003C/strong\u003E i file Parquet sono archiviati nel tuo bucket S3. Un motore esterno legge i file Parquet direttamente da S3, usando l’Horizon REST Catalog per i metadati.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003EIceberg gestito da Snowflake su storage Snowflake:\u003C/strong\u003E i file risiedono nello storage interno Snowflake. Questa opzione evita di configurare un volume esterno e il cloud storage associato. Sfrutta le funzionalità Iceberg per garantire la compatibilità in futuro.\u003C/li\u003E\u003Cli\u003E\u003Cstrong\u003ETabella Snowflake nativa:\u003C/strong\u003E per questa configurazione non serve alcuna infrastruttura di storage esterno gestita separatamente.\u003C/li\u003E\u003C/ul\u003E","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_9":{"id":"blog-title-df718c2eb6","propertiesId":"demo-vediamola-in-funzione","type":"heading2","lines":["Demo: vediamola in funzione"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_10":{"id":"image-ff805652e3","isLcpImage":false,"alt":"Terminal output showing Snowpipe Streaming data ingestion progress from configuration through verification stages","lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--ffe8bf63-3b09-4e61-9eb8-ffb46f47a08b/terminal-output-showing-snowpipe-streaming-data-ingestion.png?preferwebp=true&quality=85","width":"1023","height":"1158","title":"Figura 2: Demo di streaming end-to-end",":type":"snowflake-site/components/image"},"blog_component_11":{"id":"blog-text-fdb8621f5c","text":"\u003Cp\u003EQuando esegui lo script della demo, vedi il servizio SPCS che si avvia, il producer che inizia a generare il carico e il consumer che lo invia in streaming nella Iceberg Table.\u003C/p\u003E\u003Cp\u003EPuoi passare a Snowsight e vedere anche qui il conteggio delle righe che sale: milioni di righe, interrogabili appena arrivano.\u003C/p\u003E","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_12":{"id":"blog-title-18cfc7b4d8","propertiesId":"il-codice-svilupparlo-da-zero","type":"heading2","lines":["Il codice: svilupparlo da zero"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_13":{"id":"blog-text-1330c5cd28","text":"\u003Cp\u003EPer capire meglio come funziona il tutto, ecco un po’ di pseudocodice che aiuta a visualizzarne il funzionamento. Il codice completo è nel repository e qui sotto trovi i link a diverse demo alternative.\u003C/p\u003E\u003Cp\u003ESi parte da una Iceberg Table gestita da Snowflake e da una pipe:\u003C/p\u003E","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_14":{"id":"code-snippet-561bbeb8ba","language":"sql","codeSnippet":"-- 1. The target table\r\nCREATE OR REPLACE ICEBERG TABLE events (\r\n    event_id STRING,\r\n    event_ts TIMESTAMP_NTZ,\r\n    payload  VARIANT\r\n)\r\nCATALOG = 'SNOWFLAKE'\r\nBASE_LOCATION = 'events/'\r\nICEBERG_VERSION = 3;\r\n\r\n\r\n-- 2. The streaming pipe (extracts typed fields from the SDK's VARIANT payload)\r\nCREATE OR REPLACE PIPE events_pipe\r\nAS COPY INTO events (event_id, event_ts, payload)\r\nFROM (\r\n    SELECT $1:event_id::STRING,\r\n           $1:event_ts::TIMESTAMP_NTZ,\r\n           $1:payload::VARIANT\r\n    FROM TABLE(DATA_SOURCE(TYPE =\u003E 'STREAMING'))\r\n);\r\n","multiLine":true,":type":"snowflake-site/components/code-snippet"},"blog_component_16":{"id":"blog-text-be3fb2cd04","text":"\u003Cp\u003EL’architettura ad alte prestazioni di Snowpipe Streaming supporta sia la v2 sia la v3, ma se ometti il parametro la tabella viene impostata per default sulla v2.\u003C/p\u003E\n\u003Cp\u003EPassiamo al consumer:\u003C/p\u003E\n","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_17":{"id":"code-snippet-a45a2e0d80","language":"python","codeSnippet":"from snowflake.ingest.streaming import StreamingIngestClient\r\n\r\n\r\n# SPCS injects credentials automatically - no keys, no secrets\r\nprops = {\r\n    \"account\": \"YOUR_ACCOUNT\",\r\n    \"user\": \"YOUR_USER\",\r\n    \"role\": \"STREAMING_SERVICE_ROLE\",\r\n    \"url\": \"https://YOUR_ACCOUNT.snowflakecomputing.com\",\r\n    \"authorization_type\": \"SPCS\",\r\n    \"spcs_token_path\": \"/snowflake/session/token\",\r\n}\r\n\r\n\r\n# Connect to the pipe\r\nclient = StreamingIngestClient(\r\n    client_name=\"my_consumer\",\r\n    db_name=\"STREAMING_DEMO\",\r\n    schema_name=\"PUBLIC\",\r\n    pipe_name=\"events_pipe\",\r\n    properties=props,\r\n)\r\n\r\n\r\n# Open a channel and stream rows\r\nchannel, status = client.open_channel(\"ch_1\")\r\n\r\n\r\nfor i, row in enumerate(generate_load()):\r\n    channel.append_row(row, offset_token=str(i))\r\n\r\n\r\n# Close cleanly\r\nchannel.close()\r\nclient.close()\r\n","multiLine":true,":type":"snowflake-site/components/code-snippet"},"blog_component_23":{"id":"blog-text-1db79e1a6f","text":"\u003Cp\u003EPoi distribuisci il consumer su SPCS con una breve service spec. E osservi i dati arrivare:\u003C/p\u003E","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_24":{"id":"code-snippet-9893c2870c","language":"sql","codeSnippet":"SELECT\r\nCOUNT(*) AS rows_landed,\r\nMAX(event_ts) AS latest_event\r\nFROM\r\nstreaming_demo.public.events;","multiLine":true,":type":"snowflake-site/components/code-snippet"},"blog_component_25":{"id":"blog-text-f85f6541e3","text":"\u003Cp\u003EJava, Node e l’interfaccia REST seguono lo stesso schema: apri un canale, inserisci le righe, esegui il flush. Nel repository c’è un esempio funzionante per ciascuno, così puoi testare quello adatto al tuo stack.\u003C/p\u003E\u003Cp\u003EPer provare tutto questo, dai un’occhiata al repository.\u003C/p\u003E\u003Cp\u003ETieni presente però che lo Streaming SDK utilizza un endpoint di ingest separato su HTTPS: quindi, anche se esegui il codice all’interno di Snowflake, devi concedere un’integrazione di accesso esterno che consenta l’egress verso \u003Ccode\u003E*.snowflakecomputing.com\u003C/code\u003E.\u003C/p\u003E","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_26":{"id":"blog-title-5b1222e398","propertiesId":"best-practice","type":"heading2","lines":["Best practice"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_29":{"id":"blog-title-e1264193d8","propertiesId":"il-batching-lo-fa-snowpipe-streaming","type":"heading3","lines":["Il batching lo fa Snowpipe Streaming"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_30":{"id":"blog-text-8479f59f2e","text":"\u003Cp\u003ESnowpipe Streaming non scrive un file per ogni riga. L’SDK invia le righe appena chiami \u003Ccode\u003EappendRows\u003C/code\u003E, ma un livello di buffering lato server le assorbe e decide autonomamente il momento del commit, raggruppandole dietro le quinte così non spedisci mai un file per riga.\u003C/p\u003E\n\u003Cp\u003ENon solo: Snowflake esegue in background la compattazione automatica delle \u003Ca href=\"https://docs.snowflake.com/en/user-guide/tables-iceberg-internal-storage\" target=\"_blank\" rel=\"noopener noreferrer\"\u003EIceberg Tables gestite da Snowflake\u003C/a\u003E in cui è l’unico writer: i file Parquet di piccole dimensioni vengono uniti in file più grandi e anche i manifest piccoli vengono compattati. Non devi pianificarla né eseguirla: fa parte del normale funzionamento.\u003C/p\u003E\n\u003Cp\u003ECosa puoi fare:\u003C/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cb\u003ERaggruppa le righe in batch lato client prima di chiamare\u003C/b\u003E \u003Ccode\u003EappendRows\u003C/code\u003E: inviare le righe una alla volta comporta comunque un roundtrip per riga; raggrupparle in un’unica chiamata ammortizza questo overhead operativo, secondo lo stesso principio delle indicazioni Snowflake sulla compressione e sull’invio di più dati per richiesta.\u003C/li\u003E\n\u003Cli\u003E\u003Cb\u003EMantieni i canali attivi a lungo:\u003C/b\u003E apri un canale una volta per ogni partizione di origine e lascialo aperto per tutta la durata del processo, invece di aprirlo e chiuderlo a ogni micro-batch. È la \u003Ca href=\"https://docs.snowflake.com/en/user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-best-practices\" target=\"_blank\" rel=\"noopener noreferrer\"\u003Ebest practice\u003C/a\u003E documentata da Snowflake \u003Ca href=\"https://docs.snowflake.com/en/user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-best-practices\" target=\"_blank\" rel=\"noopener noreferrer\"\u003Eper Snowpipe Streaming\u003C/a\u003E e riduce l’overhead operativo senza ostacolare il batching che avviene già a livello sottostante.\u003C/li\u003E\n\u003Cli\u003E\u003Cb\u003EImposta\u003C/b\u003E \u003Ccode\u003ETARGET_FILE_SIZE\u003C/code\u003E \u003Cb\u003Esulla tabella:\u003C/b\u003E si tratta di una proprietà a livello di tabella, indipendente dall’SDK, che indica a Snowflake quale dimensione target usare sia per le nuove scritture sia per la compattazione in background, indipendentemente da come i dati sono arrivati.\u003C/li\u003E\n\u003Cli\u003E\u003Cb\u003ELascia lavorare il throughput:\u003C/b\u003E più alto è il TPS sostenuto, più rapidamente il buffer lato server si riempie e si svuota da solo, il che si traduce di fatto in un compromesso tra throughput e latenza per una data dimensione dei file. \u003C/li\u003E\n\u003C/ul\u003E\n","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_component_31":{"id":"blog-title-a328962980","propertiesId":"cosa-aspettarsi-iceberg-v4","type":"heading2","lines":["Cosa aspettarsi: Iceberg v4"],":type":"snowflake-site/components/blog/blog-title"},"blog_component_32":{"id":"blog-text-44e8f982ea","text":"\u003Cp\u003ESnowpipe Streaming e la compattazione automatica risolvono il problema fisico dei file di piccole dimensioni, ma i commit frequenti possono comunque generare overhead operativo nell’albero dei metadati di Iceberg. Oggi ogni commit scrive un nuovo file JSON di metadati, una manifest list e un manifest, anche quando contiene un solo file di piccole dimensioni. Per i workload che eseguono commit ogni pochi secondi, questo lavoro ripetuto sui metadati può diventare un collo di bottiglia.\u003C/p\u003E\n\u003Cp\u003E\u003Cspan style=\"font-family: adobe-clean, &quot;Source Sans Pro&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Ubuntu, &quot;Trebuchet MS&quot;, &quot;Lucida Grande&quot;, sans-serif;\"\u003ELa proposta Iceberg v4 introduce un Adaptive Metadata Tree per ridurre questa amplificazione delle scritture. Invece di creare un nuovo manifest per ogni piccolo commit, il manifest root può includerli inline. Una singola scrittura Parquet e uno scambio atomico di puntatori sostituiscono l’attuale catena, mantenendo costante l’I/O sui metadati per commit invece di farlo crescere con il numero di manifest. Per i workload di streaming ad alta frequenza, questo può migliorare drasticamente la latenza dello streaming.\u003C/span\u003E\u003C/p\u003E\n\u003Cp\u003E\u003Cspan style=\"font-family: adobe-clean, &quot;Source Sans Pro&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Ubuntu, &quot;Trebuchet MS&quot;, &quot;Lucida Grande&quot;, sans-serif;\"\u003ELo streaming è uno degli scenari di punta per Iceberg v4: i workload che eseguono commit ogni pochi secondi mettono in evidenza l’amplificazione delle scritture di metadati, e questo rende i vantaggi dell’Adaptive Metadata Tree particolarmente rilevanti. Le specifiche della v4 sono ancora in evoluzione, ma vale la pena seguirle se lo streaming Iceberg è nella tua roadmap. Snowflake è orgogliosa di partecipare attivamente alla definizione del futuro di questo formato.\u003C/span\u003E\u003C/p\u003E\n\u003Ch3\u003ECosa significa per la tua architettura\u003C/h3\u003E\n","richText":true,":type":"snowflake-site/components/blog/blog-text"},"blog_text":{"id":"blog-text-b56b14b8a8","text":"\u003Cp\u003EIn questo post abbiamo dimostrato quanto può essere efficace Snowpipe Streaming verso Iceberg. Con il tipo di carico su cui gira una vera piattaforma media o telco e senza bucket S3, cluster EKS, topic Kafka o ruoli IAM per questo setup di test, il workload è stato eseguito all’interno di Snowflake e si è potuto smantellare dopo la valutazione.\u003C/p\u003E\n\u003Cp\u003EL’infrastruttura che normalmente si frappone tra un team e un test di streaming, ossia bucket, cluster, autenticazione e approvazioni, non è un prerequisito. Puoi rispondere rapidamente: “Soddisfa i nostri requisiti?”.\u003C/p\u003E\n\u003Cp\u003ESe lavori nel Site Reliability Engineering (SRE) o nel data engineering di una grande piattaforma media o telco e lo streaming Iceberg è nella roadmap, parti dal test, non dal ciclo di approvvigionamento. Ti invitiamo a clonare il repository, distribuirlo su SPCS e vederlo in azione.\u003C/p\u003E\n\u003Cul\u003E\n\u003Cli\u003EProvalo subito con il \u003Ca href=\"https://github.com/sfc-gh-damatthews/streaming-snowpipe-to-iceberg\"\u003Erepository GitHub\u003C/a\u003E\u003C/li\u003E\n\u003Cli\u003EApprofondisci con la \u003Ca href=\"https://docs.snowflake.com/en/user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-iceberg\"\u003Edocumentazione dell’architettura ad alte prestazioni di Snowpipe Streaming\u003C/a\u003E\u003C/li\u003E\n\u003C/ul\u003E\n","richText":true,":type":"snowflake-site/components/blog/blog-text"}},":itemsOrder":["blog_component_0","blog_component_1","blog_component_2","blog_component_3","blog_component_4","blog_component_5","blog_component_6","blog_component_7","blog_component_8","blog_component_9","blog_component_10","blog_component_11","blog_component_12","blog_component_13","blog_component_14","blog_component_16","blog_component_17","blog_component_23","blog_component_24","blog_component_25","blog_component_26","blog_component_29","blog_component_30","blog_component_31","blog_component_32","blog_text"],":type":"wcm/foundation/components/responsivegrid"},"responsivegrid_premium_content_banner":{"columnClassNames":{},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","columnCount":12,"appliedCssClassNames":"snowflake-responsive-component-top-padding-medium",":items":{},":itemsOrder":[],":type":"wcm/foundation/components/responsivegrid"},"container_author_chip":{"columnClassNames":{"author_chip":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-276f66f367",":items":{"author_chip":{"id":"author-chip-7b3aa71c30","title":{"id":"title","type":"heading2","lines":["Learn more about the authors"],":type":"snowflake-site/components/title-v2"},"authors":[{"authorImage":{"id":"image-e52e3b6ded","isLcpImage":false,"alt":"Headshot of Dave Matthews","lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--ebf3baf3-b763-4b40-9263-11d6bc388488/dave-matthews.jpg?preferwebp=true&quality=85","width":"192","height":"192",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-e0efe38ce4","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/dave-matthews/"},"linkTargetContentType":"DOCUMENT_LEARN","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Dave Matthews"},"authorTitle":"Senior Solution Engineer"}],":type":"snowflake-site/components/blog/author-chip"}},":itemsOrder":["author_chip"],"appliedCssClassNames":"snowflake-responsive-component-top-padding-medium",":type":"snowflake-site/components/container"},"container_share_article":{"columnClassNames":{"share_article":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-430e86be47",":items":{"share_article":{"id":"share-article-d9b1d31c9c","linkedInShareUrl":"https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.snowflake.com%2Fcontent%2Fsnowflake-site%2Fglobal%2Fit%2Fblog%2Fsnowpipe-streaming-iceberg-tables&title=Semplifica+lo+streaming+su+Apache+Iceberg+con+Snowpipe+Streaming","twitterShareUrl":"https://x.com/intent/post?url=https%3A%2F%2Fwww.snowflake.com%2Fcontent%2Fsnowflake-site%2Fglobal%2Fit%2Fblog%2Fsnowpipe-streaming-iceberg-tables&text=Semplifica+lo+streaming+su+Apache+Iceberg+con+Snowpipe+Streaming","facebookShareUrl":"https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.snowflake.com%2Fcontent%2Fsnowflake-site%2Fglobal%2Fit%2Fblog%2Fsnowpipe-streaming-iceberg-tables",":type":"snowflake-site/components/blog/share-article"}},":itemsOrder":["share_article"],"appliedCssClassNames":"snowflake-responsive-component-top-padding-small",":type":"snowflake-site/components/container"}},":itemsOrder":["container_hero","responsivegrid_content","responsivegrid_premium_content_banner","container_author_chip","container_share_article"],":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"flexible_column_content_container_2":{"layout":"SIMPLE","id":"container-66c394809b",":items":{"blog_table_of_content":{"id":"blog-table-of-content-8c96945123","tableOfContents":[],":type":"snowflake-site/components/blog/blog-table-of-content"}},":itemsOrder":["blog_table_of_content"],":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"isBlogPage":true,"isActiveTOC":false,":type":"snowflake-site/components/flexible-column-container"},"related_content":{"id":"related-content-fdfddf3083","relatedContent":[{"configurationStatus":{"configured":true,"message":""},"tags":[{"tagText":"Prodotto e tecnologia","tagColor":"#3F808A"}],"title":{"lines":["Liberare il potenziale dell’osservabilità open con Observe su Apache Iceberg"],"type":"heading4",":type":"snowflake-site/components/title-v2"},"button":{"id":"button-569b5a4112","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/it/blog/observe-apache-iceberg-open-observability/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Liberare il potenziale dell’osservabilità open con Observe su Apache Iceberg"},"publicationDate":"JUL 30, 2026",":type":"snowflake-site/components/blog/card","authors":[{"authorImage":{"id":"image-e9b5834abd","isLcpImage":false,"alt":"Headshot-style photo of Hannah Miao of Snowflake","lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--c83c4010-5613-4c44-a706-5628c1e8717a/hannah-miao.png?preferwebp=true&quality=85","width":"800","height":"800",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-5ed35117ad","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/hannah-miao/"},"linkTargetContentType":"DOCUMENT_LEARN","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Hannah Miao"}},{"authorImage":{"id":"image-81a2003583","isLcpImage":false,"alt":"Headshot-style photo of David Zhang of Snowflake","lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--93f604fa-492f-4244-b5fd-e2632ae4cf81/david-zhang.jpg?preferwebp=true&quality=85","width":"2998","height":"3000",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-e5edf5bda7","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/david-zhang/"},"linkTargetContentType":"DOCUMENT_LEARN","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"David Zhang"}}]},{"configurationStatus":{"configured":true,"message":""},"tags":[{"tagText":"Data engineering","tagColor":"#29B5E8"}],"title":{"lines":["Migrare all’architettura Snowpipe Streaming High Performance"],"type":"heading4",":type":"snowflake-site/components/title-v2"},"button":{"id":"button-569b5a4112","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/it/blog/migrating-snowpipe-streaming-architecture/"},"linkTargetContentType":"GENERIC","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Migrare all’architettura Snowpipe Streaming High Performance"},"publicationDate":"JAN 30, 2026",":type":"snowflake-site/components/blog/card","authors":[{"authorImage":{"id":"image-b7b0ff1e25","isLcpImage":false,"lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--bb3062e2-6de8-4d7c-9094-810ded903737/chasethomas.jpg?preferwebp=true&quality=85","width":"400","height":"400",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-7756f12165","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/chase-thomas/"},"linkTargetContentType":"DOCUMENT_LEARN","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Chase Thomas"}},{"authorImage":{"id":"image-a7913ad323","isLcpImage":false,"lazyEnabled":true,"src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--a8bebf48-2c53-48f8-94fd-41305c1adf18/praveen-gattu.png?preferwebp=true&quality=85","width":"142","height":"146",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-786ce6b341","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/praveen-gattu/"},"linkTargetContentType":"DOCUMENT_LEARN","linkType":"SNOWFLAKE_INTERNAL",":type":"snowflake-site/components/button","text":"Praveen Gattu"}}]}],"isBlogPage":true,":type":"snowflake-site/components/blog/related-content"}},":itemsOrder":["flexible_column_container","related_content"],"appliedCssClassNames":"snowflake-container",":type":"snowflake-site/components/container"}},":itemsOrder":["container_breadcrumb","container_main_content"],":type":"wcm/foundation/components/responsivegrid"},"container_47873732":{"additionalClasses":"section--blog-newsletter","columnClassNames":{"flexible_column_cont":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","layout":"RESPONSIVE_GRID","columnCount":12,"id":"container-50b0ac23d5",":items":{"flexible_column_cont":{"id":"flexible-column-container-d65dceb345","type":"1-column","alignColumns":"top","containerMaxWidth":"extra-large","topPadding":"small","bottomPadding":"none","spaceBetween":"small","reverseOnMobile":false,"carouselOnMobile":false,"propertiesCSSClasses":"section--blog-newsletter","backgroundImageOption":"none","flexible_column_content_container_1":{"layout":"SIMPLE","id":"container-dbecd1a4f5",":items":{"marketo_v2":{"id":"marketo-v2-29f598c7a0","marketoForm":{"successUrl":null,"formId":"3320","edit":false,"hidden":null,"script":null,"values":null},"title":{"id":"title","type":"heading3","lines":["Subscribe to our blog newsletter","Get the best, coolest and latest delivered to your inbox each week"],":type":"snowflake-site/components/title-v2"},"marketoConfigured":true,"formConfigured":true,"munchkinId":"252-RFO-227","serverInstance":"252-RFO-227.mktoweb.com","partnerCampaignPage":false,":type":"snowflake-site/components/form/marketo-v2"},"text":{"id":"text-fb787f0a0c","additionalClasses":"newsletter-disclaimer","text":"\u003Cp\u003EBy submitting this form, I understand Snowflake will process my personal information in accordance with their Privacy Notice.\u003C/p\u003E\r\n","richText":true,":type":"snowflake-site/components/text"}},":itemsOrder":["marketo_v2","text"],":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container"},"isBlogPage":true,"isActiveTOC":false,":type":"snowflake-site/components/flexible-column-container"}},":itemsOrder":["flexible_column_cont"],"appliedCssClassNames":"snowflake-container",":type":"snowflake-site/components/container"},"experiencefragment-pre-footer":{"id":"experiencefragment-912f0d54fa","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/it/site/get-started-pre-footer/get-started-pre-footer/jcr:content","configured":true,"xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/it/site/get-started-pre-footer/get-started-pre-footer.xfmodel.json",":type":"snowflake-site/components/experiencefragment"},"markup_editor":{"id":"markup-editor-73b06a90a7","title":"Page CSS","cssContent":"@media screen and (min-width:768px){.snowflake-blog-author-chip-wrapper{justify-content:flex-start}.snowflake-blog-related-content-on-blog-page{max-width:1408px;margin-left:auto;margin-right:auto}.snowflake-text{font-family:Lato,sans-serif;font-weight:400;font-size:16px;line-height:24px}}.section--blog-newsletter{max-width:none;width:100%;padding-left:0;padding-right:0;margin-left:0;margin-right:0;margin-bottom:0}.section--blog-newsletter .mktoField{background-color:transparent !important}.section--blog-newsletter\u003E.container{padding-left:0;padding-right:0}@media screen and (min-width:768px){.section--blog-newsletter\u003E.container{padding-left:0;padding-right:0}}.newsletter-disclaimer p{font-size:14px !important}.section--blog-newsletter .snowflake-marketo-form-container{margin-bottom:24px;background-color:#f6f9fa;gap:48px;box-shadow:none}.section--blog-newsletter .snowflake-title p.snowflake-title-line:first-child{font-family:Texta;font-size:24px;line-height:26px;font-weight:700;margin-bottom:4px}.section--blog-newsletter .snowflake-title p.snowflake-title-line{text-transform:none;font-family:\"Lato\",sans-serif;font-size:16px;line-height:24px;font-weight:normal}@media screen and (min-width:1024px){.section--blog-newsletter .snowflake-marketo-form-container{display:flex;justify-content:center}.section--blog-newsletter .snowflake-title .snowflake-title-line{text-align:left}.section--blog-newsletter .snowflake-marketo-form .mktoFormRow:has(\u003E input[type=\"hidden\"]){flex-grow:0}.section--blog-newsletter .snowflake-marketo-form{display:flex;width:50% !important}.section--blog-newsletter .snowflake-marketo-form .mktoButtonRow{flex-grow:0;width:auto !important;margin-left:0;margin-right:0}.section--blog-newsletter .snowflake-marketo-form .mktoFormRow{flex-grow:1}.section--blog-newsletter\u003E.container{padding-left:0;padding-right:0}.section--blog-newsletter .snowflake-marketo-form-title{width:50%;margin-bottom:0 !important}.section--blog-newsletter .center .snowflake-title{align-items:flex-start}}.snowflake-sub-navigation a.snowflake-sub-navigation-primary-link{width:auto !important}.snowflake-blog-hero{align-items:stretch !important}","isGSAPEnabled":false,":type":"snowflake-site/components/markup-editor"},"markup_editor-table":{"id":"markup-editor-fc4867b200","title":"Table Styling CSS","cssContent":"#snowflake-blog-template-main-container table{width:100%;background-color:var(--ui-background-01);border-collapse:collapse;border:2px solid var(--ui-background-09);font-family:'Lato',sans-serif;color:var(--ui-background-09)}#snowflake-blog-template-main-container table thead{background-color:var(--ui-01)}#snowflake-blog-template-main-container table th,#snowflake-blog-template-main-container table td{border:2px solid var(--ui-background-09);padding:var(--spacing-01)}","isGSAPEnabled":false,":type":"snowflake-site/components/markup-editor"},"experiencefragment-footer":{"id":"experiencefragment-26ebf0c570","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/it/site/footer/master/jcr:content","configured":true,"xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/it/site/footer/master.xfmodel.json",":type":"snowflake-site/components/experiencefragment"}},":itemsOrder":["experiencefragment-banner","experiencefragment-header","experiencefragment-sub-header","responsivegrid","container_47873732","experiencefragment-pre-footer","markup_editor","markup_editor-table","experiencefragment-footer"],":type":"wcm/foundation/components/responsivegrid"}},":itemsOrder":["root"],":hierarchyType":"page",":path":"/content/snowflake-site/global/it/blog/snowpipe-streaming-iceberg-tables","isPasswordProtected":false,"analyticsContentTags":["snowflake-site:taxonomy/blog/product-and-technology/data-engineering","snowflake-site:taxonomy/product/data-engineering","snowflake-site:taxonomy/snowflake-feature/apache-iceberg","snowflake-site:taxonomy/snowflake-feature/ingestion"],"analyticsEnabled":true,":mappedPath":"/it/blog/snowpipe-streaming-iceberg-tables/",":type":"snowflake-site/components/structure/page","locale":"it"}
  