.card.is-featured{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:0;padding:0;border-radius:24px;overflow:hidden;box-shadow:0 30px 60px -35px rgba(15,18,34,0.2);} @media(max-width:820px){.posts-grid > .card.is-featured{grid-template-columns:1fr;}} .featured-visual{background:linear-gradient(135deg,#EEF0FF,#FCE7F3);padding:40px;display:flex;align-items:center;justify-content:center;min-height:220px;} .featured-body{padding:44px;display:flex;flex-direction:column;justify-content:center;} .featured-body h3{font-family:var(--ff-head);font-size:26px;font-weight:700;line-height:1.25;margin-bottom:14px;} .featured-body p{color:var(--muted);font-size:15px;line-height:1.7;margin-bottom:22px;} .card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:26px;display:flex;flex-direction:column;gap:14px;transition:transform .2s, box-shadow .2s;} .card:not(.is-featured):hover{transform:translateY(-4px);box-shadow:0 20px 40px -25px rgba(15,18,34,0.25);} .card-icon{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:rgba(91,95,239,.12);font-size:19px;} .card h4{font-family:var(--ff-head);font-size:17px;font-weight:700;line-height:1.35;} .card h4 a:hover{color:var(--indigo);} .card p{font-size:13.5px;color:var(--muted);line-height:1.6;} .card-foot{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);margin-top:auto;padding-top:6px;} .cat-badge{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:700;padding:6px 13px;border-radius:100px;width:fit-content;margin-bottom:18px;background:rgba(91,95,239,.12);color:#4338CA;} .post-meta{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--muted);} .avatar{width:28px;height:28px;border-radius:50%;background:var(--grad);flex-shrink:0;} .nl-card{background:var(--ink);border-radius:20px;padding:32px;color:#fff;position:relative;overflow:hidden;max-width:1240px;margin:0 auto 60px;} .nl-card::before{content:'';position:absolute;top:-40%;right:-30%;width:220px;height:220px;border-radius:50%;background:var(--grad);opacity:.35;filter:blur(40px);} .nl-card h4{font-family:var(--ff-head);font-size:19px;margin-bottom:10px;position:relative;} .nl-card p{font-size:13.5px;color:#B6BAD1;margin-bottom:20px;position:relative;} .nl-form{display:flex;gap:10px;position:relative;flex-wrap:wrap;} .nl-form input{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);border-radius:10px;padding:12px 14px;color:#fff;font-size:13.5px;flex:1;min-width:200px;} .nl-form input::placeholder{color:#7C82A0;} .nl-form button{background:var(--grad);color:#fff;font-weight:600;padding:12px 22px;border-radius:10px;font-size:13.5px;border:none;cursor:pointer;} footer{background:var(--ink);color:#fff;margin-top:40px;padding:70px 32px 32px;} .footer-grid{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;padding-bottom:50px;} @media(max-width:760px){.footer-grid{grid-template-columns:1fr 1fr;}} .footer-grid p{color:#8B90AC;font-size:13.5px;max-width:260px;margin-top:14px;} .footer-col h6{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#8B90AC;margin-bottom:16px;} .footer-col a{display:block;font-size:13.5px;color:#D1D4E5;margin-bottom:11px;} .footer-bottom{max-width:1240px;margin:0 auto;padding-top:26px;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:12px;color:#8B90AC;} .post-hero{max-width:820px;margin:0 auto;padding:70px 32px 40px;text-align:center;} .post-hero .cat-badge{margin:0 auto 20px;} .post-hero h1{font-family:var(--ff-head);font-size:clamp(32px,5vw,46px);font-weight:800;line-height:1.15;} .post-hero .post-meta{justify-content:center;margin-top:24px;} .post-body-wrap{max-width:720px;margin:0 auto;padding:0 32px 80px;font-size:17px;line-height:1.85;} .post-body-wrap p{margin-bottom:22px;} .post-body-wrap h2{font-family:var(--ff-head);font-size:26px;margin:40px 0 16px;} .post-body-wrap pre{background:var(--ink);color:#E4E7EC;border-radius:12px;padding:20px 22px;overflow-x:auto;margin:24px 0;font-family:var(--ff-mono);font-size:13.5px;} .post-body-wrap code{font-family:var(--ff-mono);} .post-body-wrap blockquote{border-left:3px solid var(--pink);padding-left:20px;margin:28px 0;color:var(--muted);font-style:italic;font-size:18px;} .post-body-wrap img{border-radius:12px;margin:24px 0;} .docs-header{background:linear-gradient(120deg,#E9F8FF,#F3EEFF 60%,#FEF1F8);border-bottom:1px solid var(--border);padding:56px 32px;margin:-1px -1px 0;} .docs-header-inner{max-width:1240px;margin:0 auto;} .docs-badge{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;background:rgba(41,181,232,0.12);color:#0E7BA8;padding:6px 14px;border-radius:100px;margin-bottom:16px;} .docs-badge.spark{background:rgba(234,88,12,0.12);color:#C2410C;} .docs-badge.db{background:rgba(219,39,119,0.12);color:#BE185D;} .docs-header h1{font-family:var(--ff-head);font-size:clamp(28px,4vw,40px);font-weight:800;} .docs-header p{color:var(--muted);margin-top:10px;max-width:560px;} .docs-layout{max-width:1240px;margin:0 auto;padding:44px 32px 90px;display:grid;grid-template-columns:250px 1fr;gap:56px;} @media(max-width:900px){.docs-layout{grid-template-columns:1fr;}} .docs-nav{position:sticky;top:96px;align-self:start;} .docs-nav-group{margin-bottom:26px;} .docs-nav-group h6{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:10px;} .docs-nav-group a{display:block;font-size:13.5px;padding:7px 10px;border-radius:8px;color:var(--muted);border-left:2px solid transparent;} .docs-nav-group a:hover{color:var(--ink);background:var(--surface);} .docs-nav-group a.active{color:#0E7BA8;font-weight:600;background:rgba(41,181,232,0.08);border-left-color:#29B5E8;} .docs-nav-group a.active.spark{color:#C2410C;background:rgba(234,88,12,0.08);border-left-color:#EA580C;} .docs-nav-group a.active.db{color:#BE185D;background:rgba(219,39,119,0.08);border-left-color:#DB2777;} .docs-content section{margin-bottom:56px;scroll-margin-top:100px;} .docs-content h2{font-family:var(--ff-head);font-size:24px;font-weight:700;margin-bottom:16px;} .docs-content h3{font-family:var(--ff-head);font-size:17px;font-weight:700;margin:24px 0 10px;} .docs-content p{font-size:15px;color:#3E4460;line-height:1.75;margin-bottom:14px;} .docs-content pre{background:var(--ink);color:#E4E7EC;border-radius:12px;padding:18px 20px;overflow-x:auto;margin:16px 0;font-family:var(--ff-mono);font-size:13px;} .docs-content code.inline{font-family:var(--ff-mono);background:#F1F2FA;color:#5B5FEF;padding:2px 7px;border-radius:5px;font-size:13px;} .callout{display:flex;gap:12px;background:#F6FBFF;border:1px solid #D6EEFA;border-left:3px solid #29B5E8;border-radius:10px;padding:16px 18px;margin:18px 0;font-size:13.5px;color:#245A73;} .callout.warn{background:#FFFBEB;border-color:#FDE68A;border-left-color:#F59E0B;color:#8A5A0A;} .callout.spark{background:#FFF7ED;border-color:#FED7AA;border-left-color:#EA580C;color:#9A3412;} .callout.db{background:#FEF2F8;border-color:#FBCFE8;border-left-color:#DB2777;color:#9D174D;} .docs-table{width:100%;border-collapse:collapse;margin:18px 0;font-size:13.5px;} .docs-table th{text-align:left;padding:10px 14px;background:#F6F7FC;font-family:var(--ff-head);font-size:12.5px;} .docs-table td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--muted);} .blog-pager{display:flex;justify-content:space-between;max-width:1240px;margin:20px auto 0;padding:30px 32px 0;font-family:var(--ff-mono);font-size:13px;} .blog-pager a{border:1px solid var(--border);padding:9px 16px;border-radius:100px;} .blog-pager a:hover{border-color:var(--ink);} ::selection{background:var(--pink);color:#fff;} :focus-visible{outline:2px solid var(--indigo);outline-offset:2px;} ]]>
Nouveau : Spark Declarative Pipelines

Comprendre la data,
une ligne à la fois.

throughput.py — live
ALPHA LIST false

Derniers articles

📄