{"templateName":"blog-page","cssClassNames":"blog-page page basicpage summit-page","allowedRenditionsWidth":["320","480","640","768","960","1200","1440","1920"],"description":"Discover how to migrate Apache Spark pipelines to Snowflake (Snowpark Connect) effortlessly using the Snowflake CoCo spark-migration skill. Improve performance and reduce costs.","language":"en","title":"Migrate Apache Spark to Snowflake with CoCo","analyticsPageType":"homepage","analyticsCategory":"general","analyticsSubCategory":"","excludeFromAnalytics":false,":mappedPath":"/en/blog/migrate-spark-to-snowflake/",":type":"snowflake-site/components/structure/page",":items":{"root":{"columnCount":12,"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",":items":{"experiencefragment-banner":{"id":"experiencefragment-f4359112b6","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/pushdown-banner/pushdown-banner-blank/jcr:content","configured":true,":type":"snowflake-site/components/experiencefragment","xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/pushdown-banner/pushdown-banner-blank.xfmodel.json"},"experiencefragment-header":{"id":"experiencefragment-42c5f79c70","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master/jcr:content","configured":true,":type":"snowflake-site/components/experiencefragment","xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/mega-nav-header/master.xfmodel.json","languageNavPath":"/content/snowflake-site/global/en/blog/migrate-spark-to-snowflake.languagenav.json","appliedCssClassNames":"snowflake-sticky-nav-host"},"experiencefragment-sub-header":{"id":"experiencefragment-56e3660b0e","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/sub-navigation/master/jcr:content","configured":true,":type":"snowflake-site/components/experiencefragment","xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/sub-navigation/master.xfmodel.json"},"responsivegrid":{"columnCount":12,"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",":items":{"container_breadcrumb":{"layout":"RESPONSIVE_GRID","columnCount":12,"columnClassNames":{"breadcrumb":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","id":"blog-page-breadcrumb-indentation",":type":"snowflake-site/components/container",":items":{"breadcrumb":{"id":"breadcrumb-4ff4bd6bb7","breadcrumbItems":[{"title":"Blog","path":"/en/blog/","active":false},{"title":"Run Apache Spark™ Pipelines on Snowflake: Faster Performance and Lower Costs with One CoCo Prompt","path":"/en/blog/migrate-spark-to-snowflake/","active":false}],":type":"snowflake-site/components/blog/breadcrumb"}},":itemsOrder":["breadcrumb"],"appliedCssClassNames":"snowflake-container"},"container_main_content":{"layout":"RESPONSIVE_GRID","columnCount":12,"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","id":"main-content",":type":"snowflake-site/components/container",":items":{"flexible_column_container":{"id":"flexible-column-container-5dae832e52","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-aff9007f99",":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container",":items":{"container_hero":{"layout":"RESPONSIVE_GRID","columnCount":12,"columnClassNames":{"blog_hero":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","id":"container-f18d5bca68",":type":"snowflake-site/components/container",":items":{"blog_hero":{"id":"blog-hero-d95dad650d","linkedInShareUrl":"https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.snowflake.com%2Fcontent%2Fsnowflake-site%2Fglobal%2Fen%2Fblog%2Fmigrate-spark-to-snowflake&title=Run+Apache+Spark%E2%84%A2+Pipelines+on+Snowflake%3A+Faster+Performance+and+Lower+Costs+with+One+CoCo+Prompt","twitterShareUrl":"https://x.com/intent/post?url=https%3A%2F%2Fwww.snowflake.com%2Fcontent%2Fsnowflake-site%2Fglobal%2Fen%2Fblog%2Fmigrate-spark-to-snowflake&text=Run+Apache+Spark%E2%84%A2+Pipelines+on+Snowflake%3A+Faster+Performance+and+Lower+Costs+with+One+CoCo+Prompt","facebookShareUrl":"https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.snowflake.com%2Fcontent%2Fsnowflake-site%2Fglobal%2Fen%2Fblog%2Fmigrate-spark-to-snowflake","showClaude":true,"showChatGpt":true,"authors":[{"authorImage":{"id":"image-8951d655f6","height":"1949","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--ff2e6c5e-5d39-4d91-885a-3325d9cec779/ash-ubrani.jpg?preferwebp=true&quality=85","lazyEnabled":true,"width":"1791",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-15b8e6e012","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/ash-ubrani/"},"linkTargetContentType":"DOCUMENT_LEARN",":type":"snowflake-site/components/button","linkType":"SNOWFLAKE_INTERNAL","text":"Ash Ubrani"}},{"authorImage":{"id":"image-95b7a0e036","height":"512","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--dae33bdb-6a4a-4205-a457-e653bc30c068/bc.jpg?preferwebp=true&quality=85","alt":"Brandon Carver","lazyEnabled":true,"width":"384",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-84a7684e32","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/brandon-carver/"},"linkTargetContentType":"DOCUMENT_LEARN",":type":"snowflake-site/components/button","linkType":"SNOWFLAKE_INTERNAL","text":"Brandon Carver"}}],"image":{"id":"image-17c6950532","height":"720","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--cdf0ebbf-9ec9-486c-8e31-dcc0bbc2aad7/13-snowflake.png?preferwebp=true&quality=85","lazyEnabled":true,"width":"1680",":type":"snowflake-site/components/image"},"timeToRead":"1","publicationDate":"JUL 30, 2026","title":{"lines":["Run Apache Spark™ Pipelines on Snowflake: Faster Performance and Lower Costs with One CoCo Prompt"],"type":"heading2",":type":"snowflake-site/components/title-v2"},":type":"snowflake-site/components/blog/blog-hero"}},":itemsOrder":["blog_hero"]},"responsivegrid_content":{"columnCount":12,"columnClassNames":{"youtube":"aem-GridColumn aem-GridColumn--default--12","blog_text_900653965":"aem-GridColumn aem-GridColumn--default--12","blog_text":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","appliedCssClassNames":"snowflake-layout-container-inner-padding-small",":items":{"blog_text":{"id":"blog-text-0853d5764d","text":"\u003Cp\u003ERunning Spark is not just about writing transformations and business logic. It also means tuning clusters, patching infrastructure and managing dependency environments.\u003C/p\u003E\r\n\u003Cp\u003EMoving those workloads onto Snowflake addresses that directly, with customers experiencing up to 5.1x faster performance and 42% lower costs\u003Csup\u003E1\u003C/sup\u003E. \u003Ca rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://www.snowflake.com/en/product/features/snowpark-connect-apache-spark/\"\u003ESnowpark Connect for Apache Spark™\u003C/a\u003E lets your existing Spark code run on Snowflake's engine with minimal changes; no clusters to provision, tune or patch.\u003C/p\u003E\r\n\u003Cp\u003EMost generic AI coding assistants can fall short when it comes to migration at scale. They can rewrite a snippet, but they lack the compatibility context to move an entire codebase to a new engine: which patterns are unsupported, how to map them to DataFrame equivalents and how to record what changed. The \u003Ccode\u003Espark-migration\u003C/code\u003E skill in \u003Ca rel=\"noopener noreferrer\" target=\"_blank\" href=\"https://www.snowflake.com/en/product/snowflake-coco/\"\u003ESnowflake CoCo\u003C/a\u003E, a data-native AI coding agent, is built to close that gap.\u003C/p\u003E\r\n\u003Ch2\u003EOne prompt, one codebase\u003C/h2\u003E\r\n\u003Cp\u003EThe clearest way to see the skill is to watch it run. The demo below starts with a directory of data pipelines written in PySpark.\u003C/p\u003E\r\n\u003Cp\u003EFrom there, the prompt is simple. Just ask CoCo to migrate a file or directory of files to Snowpark Connect. This will launch the \u003Ccode\u003Espark-migration\u003C/code\u003E skill coordinating the \u003Ccode\u003Esnowpark-connect\u003C/code\u003E migration path that will guide you through making your Spark code compatible with Snowpark Connect. Note that the input file(s) for this skill could be Python, Scala or Java code files (as well as the build files). The skill can also take in notebook files to ensure they are compatible with Snowflake.\u003C/p\u003E\r\n\u003Cp\u003E\u003Ci\u003EThe demo shows a large Spark codebase checked for compatibility and migrated to Snowflake from a single prompt.\u003C/i\u003E\u003C/p\u003E\r\n\u003Cp\u003E&nbsp;\u003C/p\u003E\r\n","richText":true,":type":"snowflake-site/components/blog/blog-text"},"youtube":{"id":"embed-fdbfcb7771","youtubeVideoId":"O9fqLg2nAKc","layout":"responsive","youtubeAspectRatio":"56.25","youtubeAutoPlay":false,"youtubeLoop":false,"youtubeMute":false,"youtubePlaysInline":false,"youtubeRel":false,"embeddableResourceType":"core/wcm/components/embed/v1/embed/embeddable/youtube","type":"EMBEDDABLE",":type":"snowflake-site/components/youtube"},"blog_text_900653965":{"id":"blog-text-e4ca696e61","text":"\u003Cp\u003E\u003Ci\u003EFigure 1: A directory of PySpark pipelines scanned, rewritten and reported on from one conversational prompt.\u003C/i\u003E\u003C/p\u003E\r\n\u003Cp\u003E&nbsp;\u003C/p\u003E\r\n\u003Ch2\u003EHow to migrate PySpark to Snowflake with CoCo\u003C/h2\u003E\r\n\u003Cp\u003EBehind that single prompt, CoCo's agentic workflow runs through the steps a migration expert would:\u003C/p\u003E\r\n\u003Col\u003E\r\n\u003Cli\u003E\u003Cb\u003EIt does an assessment and builds an inventory:\u003C/b\u003E This skill scans every source file for compatibility issues including RDD operations, certain UDF serialization patterns and unsupported file formats, referencing a knowledge base built by Snowflake's engineering team. Each file, dependency and unique API call are inventoried.\u003C/li\u003E\r\n\u003Cli\u003E\u003Cb\u003EIt applies targeted fixes:\u003C/b\u003E The core conversion is done by dispatching parallel agents to apply code fixes and verifying the results through multiple gates, including syntax compilation and evidence-based checks. During this phase, incompatible patterns are rewritten to DataFrame equivalents, imports and session creation are updated and anything that needs manual review (such as validating reads and writes) is flagged with a detailed explanation.\u003C/li\u003E\r\n\u003Cli\u003E\u003Cb\u003EIt generates predictable reporting that can be consumed by people or agents:\u003C/b\u003E This gives you full visibility into every change made and what may still need attention by generating issue logs, inventory reports and a validation of the overall migration state.\u003C/li\u003E\r\n\u003Cli\u003E\u003Cb\u003EIt validates the converted code's functionality:\u003C/b\u003E The validation phase performs an end-to-end validation by running the original PySpark code and the migrated Snowpark Connect code against the same synthetic data and comparing their outputs table-by-table. This catches behavioral differences and validates the code is ready to run. Any fixes discovered during validation are automatically committed back to the deliverable branch, so the result is both a pass/fail verdict and a more complete migration. This validation phase is optional.\u003C/li\u003E\r\n\u003C/ol\u003E\r\n\u003Cp\u003EInstead of searching across files for incompatible patterns and cross-referencing documentation, the developer stays in one workflow while CoCo handles the scanning, fixing and reporting needed to get Spark code running on Snowflake.\u003C/p\u003E\r\n\u003Ch2\u003EMore than a single file\u003C/h2\u003E\r\n\u003Cp\u003EMigration is rarely one clean step, so the skill meets a codebase wherever it is. A few other ways to point it at your work:\u003C/p\u003E\r\n\u003Cul\u003E\r\n\u003Cli\u003E\u003Cb\u003EScope the effort before you start:\u003C/b\u003E \u003Ci\u003E&quot;Assess the compatibility and level of effort required to migrate this codebase.&quot;\u003C/i\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Cb\u003EValidate before you run:\u003C/b\u003E \u003Ci\u003E&quot;Validate that this codebase will run with Snowpark Connect.&quot;\u003C/i\u003E\u003C/li\u003E\r\n\u003Cli\u003E\u003Cb\u003EComplete another tool's migration:\u003C/b\u003E \u003Ci\u003E&quot;Analyze the output of any other migration tool and complete the migration.&quot;\u003C/i\u003E\u003C/li\u003E\r\n\u003C/ul\u003E\r\n\u003Cp\u003EThe skill auto-activates when you mention Spark, PySpark or code migration; or you can invoke it directly with \u003Ccode\u003Espark-migration\u003C/code\u003E. As noted before, it will flag anything that needs manual review, so you stay in control of what changes.\u003C/p\u003E\r\n\u003Ch2\u003ETry it yourself\u003C/h2\u003E\r\n\u003Cp\u003EThat is a compelling offer: less manual compatibility testing, less refactoring and a faster path to running Spark workloads natively on Snowflake. What used to take hours of manual effort, even with existing deterministic tools, now takes minutes.\u003C/p\u003E\r\n\u003Cp\u003EThe \u003Ccode\u003Espark-migration\u003C/code\u003E skill is bundled with CoCo; no setup required.\u003C/p\u003E\r\n\u003Cp\u003ETry it: \u003Ci\u003E&quot;Migrate this file to Snowpark Connect.&quot;\u003C/i\u003E\u003C/p\u003E\r\n\u003Cp\u003EGet started with CoCo and Spark migration by referring to \u003Ca href=\"https://docs.snowflake.com/en/migrations/sma-docs/migrating-with-cortex-code/README\" target=\"_blank\" rel=\"noopener noreferrer\"\u003Ethis documentation\u003C/a\u003E.\u003C/p\u003E\r\n\u003Cp\u003E&nbsp;\u003C/p\u003E\r\n\u003Cp\u003E\u003Csub\u003E\u003Csup\u003E1\u003C/sup\u003E Based on customer production use cases and proof-of-concept exercises comparing the speed and cost for Snowpark versus managed Spark services between November 2022 and May 2025. All findings summarize actual customer outcomes with real data and do not represent fabricated datasets used for benchmarks.\u003C/sub\u003E\u003C/p\u003E\r\n","richText":true,":type":"snowflake-site/components/blog/blog-text"}},":itemsOrder":["blog_text","youtube","blog_text_900653965"],":type":"wcm/foundation/components/responsivegrid"},"responsivegrid_premium_content_banner":{"columnCount":12,"columnClassNames":{},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","appliedCssClassNames":"snowflake-responsive-component-top-padding-medium",":items":{},":itemsOrder":[],":type":"wcm/foundation/components/responsivegrid"},"container_author_chip":{"layout":"RESPONSIVE_GRID","columnCount":12,"columnClassNames":{"author_chip":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","id":"container-667e5265c3",":type":"snowflake-site/components/container",":items":{"author_chip":{"id":"author-chip-72298eb25c","title":{"id":"title","type":"heading2","lines":["Learn more about the authors"],":type":"snowflake-site/components/title-v2"},"authors":[{"authorImage":{"id":"image-8951d655f6","height":"1949","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--ff2e6c5e-5d39-4d91-885a-3325d9cec779/ash-ubrani.jpg?preferwebp=true&quality=85","lazyEnabled":true,"width":"1791",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-15b8e6e012","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/ash-ubrani/"},"linkTargetContentType":"DOCUMENT_LEARN",":type":"snowflake-site/components/button","linkType":"SNOWFLAKE_INTERNAL","text":"Ash Ubrani"},"authorTitle":"Senior Product Marketing Manager"},{"authorImage":{"id":"image-95b7a0e036","height":"512","src":"https://www.snowflake.com/adobe/dynamicmedia/deliver/dm-aid--dae33bdb-6a4a-4205-a457-e653bc30c068/bc.jpg?preferwebp=true&quality=85","alt":"Brandon Carver","lazyEnabled":true,"width":"384",":type":"snowflake-site/components/image"},"authorCta":{"id":"button-84a7684e32","showOutboundIcon":false,"buttonLink":{"valid":true,"url":"/en/blog/authors/brandon-carver/"},"linkTargetContentType":"DOCUMENT_LEARN",":type":"snowflake-site/components/button","linkType":"SNOWFLAKE_INTERNAL","text":"Brandon Carver"},"authorTitle":"Analytics and Product Management, Snowflake"}],":type":"snowflake-site/components/blog/author-chip"}},":itemsOrder":["author_chip"],"appliedCssClassNames":"snowflake-responsive-component-top-padding-medium"}},":itemsOrder":["container_hero","responsivegrid_content","responsivegrid_premium_content_banner","container_author_chip"]},"flexible_column_content_container_2":{"layout":"SIMPLE","id":"container-e1889d5ab0",":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container",":items":{"blog_table_of_content":{"id":"blog-table-of-content-f5e4c61df0",":type":"snowflake-site/components/blog/blog-table-of-content","tableOfContents":[]}},":itemsOrder":["blog_table_of_content"]},":type":"snowflake-site/components/flexible-column-container","isBlogPage":true,"isActiveTOC":false},"related_content":{"id":"related-content-dc7d13765a","relatedContent":[],":type":"snowflake-site/components/blog/related-content","isBlogPage":true}},":itemsOrder":["flexible_column_container","related_content"],"appliedCssClassNames":"snowflake-container"}},":itemsOrder":["container_breadcrumb","container_main_content"],":type":"wcm/foundation/components/responsivegrid"},"container_47873732":{"additionalClasses":"section--blog-newsletter","layout":"RESPONSIVE_GRID","columnCount":12,"columnClassNames":{"flexible_column_cont":"aem-GridColumn aem-GridColumn--default--12"},"gridClassNames":"aem-Grid aem-Grid--12 aem-Grid--default--12","id":"container-24000f7b6e",":type":"snowflake-site/components/container",":items":{"flexible_column_cont":{"id":"flexible-column-container-389c2c3a58","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-d1c873cc81",":type":"snowflake-site/components/flexible-column-container/flexible-column-content-container",":items":{"marketo_v2":{"id":"marketo-v2-30e50f6a16","marketoForm":{"formId":"3320","hidden":null,"edit":false,"successUrl":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"},"munchkinId":"252-RFO-227","serverInstance":"252-RFO-227.mktoweb.com","marketoConfigured":true,"formConfigured":true,":type":"snowflake-site/components/form/marketo-v2"},"text":{"id":"text-52aee07cee","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","isBlogPage":true,"isActiveTOC":false}},":itemsOrder":["flexible_column_cont"],"appliedCssClassNames":"snowflake-container"},"experiencefragment-pre-footer":{"id":"experiencefragment-9d248eaa58","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/get-started-pre-footer/get-started-pre-footer/jcr:content","configured":true,":type":"snowflake-site/components/experiencefragment","xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/get-started-pre-footer/get-started-pre-footer.xfmodel.json"},"markup_editor":{"id":"markup-editor-22688a1855","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}",":type":"snowflake-site/components/markup-editor","isGSAPEnabled":false},"markup_editor-table":{"id":"markup-editor-bf6dcaf579","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)}",":type":"snowflake-site/components/markup-editor","isGSAPEnabled":false},"experiencefragment-footer":{"id":"experiencefragment-a8264e4f30","localizedFragmentVariationPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/footer/master/jcr:content","configured":true,":type":"snowflake-site/components/experiencefragment","xfModelPath":"/content/experience-fragments/snowflake-site/language-masters/en/site/footer/master.xfmodel.json"}},":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/en/blog/migrate-spark-to-snowflake","analyticsContentTags":[],"analyticsEnabled":true,"isPasswordProtected":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/en/blog/migrate-spark-to-snowflake","language":"en","category":"general","pageName":"Run Apache Spark™ Pipelines on Snowflake: Faster Performance and Lower Costs with One CoCo Prompt","contentTags":[]},"locale":"en"}
  