blob: ed03df2de4604a0d3ac9389fcd0d48677fc94f63 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Spark Release 3.1.2 | Apache Spark
</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
<link href="/css/custom.css" rel="stylesheet">
<!-- Code highlighter CSS -->
<link href="/css/pygments-default.css" rel="stylesheet">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["disableCookies"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '40']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body class="global">
<nav class="navbar navbar-expand-lg navbar-dark p-0 px-4" style="background: #1D6890;">
<a class="navbar-brand" href="/">
<img src="/images/spark-logo-rev.svg" alt="" width="141" height="72">
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent"
aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse col-md-12 col-lg-auto pt-4" id="navbarContent">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/downloads.html">Download</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="libraries" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
Libraries
</a>
<ul class="dropdown-menu" aria-labelledby="libraries">
<li><a class="dropdown-item" href="/sql/">SQL and DataFrames</a></li>
<li><a class="dropdown-item" href="/streaming/">Spark Streaming</a></li>
<li><a class="dropdown-item" href="/mllib/">MLlib (machine learning)</a></li>
<li><a class="dropdown-item" href="/graphx/">GraphX (graph)</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="/third-party-projects.html">Third-Party Projects</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="documentation" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
Documentation
</a>
<ul class="dropdown-menu" aria-labelledby="documentation">
<li><a class="dropdown-item" href="/docs/latest/">Latest Release</a></li>
<li><a class="dropdown-item" href="/documentation.html">Older Versions and Other Resources</a></li>
<li><a class="dropdown-item" href="/faq.html">Frequently Asked Questions</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/examples.html">Examples</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="community" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
Community
</a>
<ul class="dropdown-menu" aria-labelledby="community">
<li><a class="dropdown-item" href="/community.html">Mailing Lists &amp; Resources</a></li>
<li><a class="dropdown-item" href="/contributing.html">Contributing to Spark</a></li>
<li><a class="dropdown-item" href="/improvement-proposals.html">Improvement Proposals (SPIP)</a>
</li>
<li><a class="dropdown-item" href="https://issues.apache.org/jira/browse/SPARK">Issue Tracker</a>
</li>
<li><a class="dropdown-item" href="/powered-by.html">Powered By</a></li>
<li><a class="dropdown-item" href="/committers.html">Project Committers</a></li>
<li><a class="dropdown-item" href="/history.html">Project History</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="developers" role="button" data-bs-toggle="dropdown"
aria-expanded="false">
Developers
</a>
<ul class="dropdown-menu" aria-labelledby="developers">
<li><a class="dropdown-item" href="/developer-tools.html">Useful Developer Tools</a></li>
<li><a class="dropdown-item" href="/versioning-policy.html">Versioning Policy</a></li>
<li><a class="dropdown-item" href="/release-process.html">Release Process</a></li>
<li><a class="dropdown-item" href="/security.html">Security</a></li>
</ul>
</li>
</ul>
<ul class="navbar-nav ml-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="apacheFoundation" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
Apache Software Foundation
</a>
<ul class="dropdown-menu" aria-labelledby="apacheFoundation">
<li><a class="dropdown-item" href="https://www.apache.org/">Apache Homepage</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/licenses/">License</a></li>
<li><a class="dropdown-item"
href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/security/">Security</a></li>
<li><a class="dropdown-item" href="https://www.apache.org/events/current-event">Event</a></li>
</ul>
</li>
</ul>
</div>
</nav>
<div class="container">
<div class="row mt-4">
<div class="col-12 col-md-9">
<h2>Spark Release 3.1.2</h2>
<p>Spark 3.1.2 is a maintenance release containing stability fixes. This release is based on the branch-3.1 maintenance branch of Spark. We strongly recommend all 3.1 users to upgrade to this stable release.</p>
<h3 id="notable-changes">Notable changes</h3>
<ul>
<li><a href="https://issues.apache.org/jira/browse/SPARK-32924">[SPARK-32924]</a>: Web UI sort on duration is wrong</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-33482">[SPARK-33482]</a>: V2 Datasources that extend FileScan preclude exchange reuse</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34361">[SPARK-34361]</a>: Dynamic allocation on K8s kills executors with running tasks</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34392">[SPARK-34392]</a>: Invalid ID for offset-based ZoneId since Spark 3.0</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34417">[SPARK-34417]</a>: DataFrameNaFunctions.fillMap(values: Seq[(String, Any)]) fails for column name having a dot</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34436">[SPARK-34436]</a>: DPP support LIKE ANY/ALL</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34473">[SPARK-34473]</a>: Avoid NPE in DataFrameReader.schema(StructType)</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34482">[SPARK-34482]</a>: Correct the active SparkSession for streaming query</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34490">[SPARK-34490]</a>: Table maybe resolved as a view if the table is dropped</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34497">[SPARK-34497]</a>: JDBC connection provider is not removing kerberos credentials from JVM security context</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34504">[SPARK-34504]</a>: Avoid unnecessary view resolving and remove the <code class="language-plaintext highlighter-rouge">performCheck</code> flag</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34515">[SPARK-34515]</a>: Fix NPE if InSet contains null value during getPartitionsByFilter</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34534">[SPARK-34534]</a>: New protocol FetchShuffleBlocks in OneForOneBlockFetcher lead to data loss or correctness</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34543">[SPARK-34543]</a>: Respect case sensitivity in V1 ALTER TABLE .. SET LOCATION</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34545">[SPARK-34545]</a>: Fix inconsistent results when applying 2 Python UDFs with different return type to 2 columns together</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34547">[SPARK-34547]</a>: Resolve using child metadata attributes as fallback</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34550">[SPARK-34550]</a>: Skip InSet null value during push filter to Hive metastore</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34555">[SPARK-34555]</a>: Resolve metadata output from DataFrame</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34556">[SPARK-34556]</a>: Checking duplicate static partition columns doesn&#8217;t respect case sensitive conf</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34561">[SPARK-34561]</a>: Cannot drop/add columns from/to a dataset of v2 <code class="language-plaintext highlighter-rouge">DESCRIBE TABLE</code></li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34567">[SPARK-34567]</a>: CreateTableAsSelect should have metrics update too</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34577">[SPARK-34577]</a>: Cannot drop/add columns from/to a dataset of v2 <code class="language-plaintext highlighter-rouge">DESCRIBE NAMESPACE</code></li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34584">[SPARK-34584]</a>: When insert into a partition table with a illegal partition value, DSV2 behavior different as others</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34596">[SPARK-34596]</a>: NewInstance.doGenCode should not throw malformed class name error</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34599">[SPARK-34599]</a>: INSERT INTO OVERWRITE doesn&#8217;t support partition columns containing dot for DSv2</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34607">[SPARK-34607]</a>: NewInstance.resolved should not throw malformed class name error</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34610">[SPARK-34610]</a>: Fix Python UDF used in GroupedAggPandasUDFTests</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34613">[SPARK-34613]</a>: Fix view does not capture disable hint config</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34630">[SPARK-34630]</a>: Add type hints of pyspark.<strong>version</strong> and pyspark.sql.Column.contains</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34639">[SPARK-34639]</a>: Always remove unnecessary Alias in Analyzer.resolveExpression</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34674">[SPARK-34674]</a>: Spark app on k8s doesn&#8217;t terminate without call to sparkContext.stop() method</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34681">[SPARK-34681]</a>: Full outer shuffled hash join when building left side produces wrong result</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34682">[SPARK-34682]</a>: Regression in &#8220;operating on canonicalized plan&#8221; check in CustomShuffleReaderExec</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34697">[SPARK-34697]</a>: Allow DESCRIBE FUNCTION and SHOW FUNCTIONS explain about string concatenation operator</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34713">[SPARK-34713]</a>: Group by CreateStruct with ExtractValue fails analysis</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34714">[SPARK-34714]</a>: collect_list(struct()) fails when used with GROUP BY</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34719">[SPARK-34719]</a>: Fail if the view query has duplicated column names</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34723">[SPARK-34723]</a>: Correct parameter type for subexpression elimination under whole-stage</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34724">[SPARK-34724]</a>: Fix Interpreted evaluation by using getClass.getMethod instead of getDeclaredMethod</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34727">[SPARK-34727]</a>: Difference in results of casting float to timestamp</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34731">[SPARK-34731]</a>: ConcurrentModificationException in EventLoggingListener when redacting properties</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34737">[SPARK-34737]</a>: Discrepancy between TIMESTAMP_SECONDS and cast from float</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34756">[SPARK-34756]</a>: Fix FileScan equality check</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34763">[SPARK-34763]</a>: col(), $&#8221;<name>" and df("name") should handle quoted column names properly</name></li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34766">[SPARK-34766]</a>: Do not capture maven config for views</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34768">[SPARK-34768]</a>: Respect the default input buffer size in Univocity</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34770">[SPARK-34770]</a>: InMemoryCatalog.tableExists should not fail if database doesn&#8217;t exist</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34772">[SPARK-34772]</a>: RebaseDateTime loadRebaseRecords should use Spark classloader instead of context</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34776">[SPARK-34776]</a>: Catalyst error on on certain struct operation (Couldn&#8217;t find <em>gen_alias</em>)</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34790">[SPARK-34790]</a>: Fail in fetch shuffle blocks in batch when i/o encryption is enabled</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34794">[SPARK-34794]</a>: Nested higher-order functions broken in DSL</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34796">[SPARK-34796]</a>: Codegen compilation error for query with LIMIT operator and without AQE</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34803">[SPARK-34803]</a>: Pass the raised ImportError if pandas or pyarrow fail to import</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34811">[SPARK-34811]</a>: Redact fs.s3a.access.key like secret and token</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34814">[SPARK-34814]</a>: LikeSimplification should handle NULL</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34829">[SPARK-34829]</a>: Fix higher order function results</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34833">[SPARK-34833]</a>: Apply right-padding correctly for correlated subqueries</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34834">[SPARK-34834]</a>: There is a potential Netty memory leak in TransportResponseHandler</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34840">[SPARK-34840]</a>: Fix cases of corruption in merged shuffle blocks that are pushed</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34845">[SPARK-34845]</a>: computeAllMetrics may return partial metrics when some child metrics are missing</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34876">[SPARK-34876]</a>: Non-nullable aggregates can return NULL in a correlated subquery</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34897">[SPARK-34897]</a>: Support reconcile schemas based on index after nested column pruning</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34909">[SPARK-34909]</a>: conv() does not convert negative inputs to unsigned correctly</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34922">[SPARK-34922]</a>: Use better CBO cost function</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34923">[SPARK-34923]</a>: Metadata output should not always be propagated</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34926">[SPARK-34926]</a>: PartitionUtils.getPathFragment should handle null value</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34939">[SPARK-34939]</a>: Throw fetch failure exception when unable to deserialize broadcasted map statuses</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34948">[SPARK-34948]</a>: Add ownerReference to executor configmap to fix leakages</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34949">[SPARK-34949]</a>: Executor.reportHeartBeat reregisters blockManager even when Executor is shutting down</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34963">[SPARK-34963]</a>: Nested column pruning fails to extract case-insensitive struct field from array</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34970">[SPARK-34970]</a>: Redact map-type options in the output of explain()</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35014">[SPARK-35014]</a>: A foldable expression could not be replaced by an AttributeReference</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35019">[SPARK-35019]</a>: Improve type hints on pyspark.sql.*</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35045">[SPARK-35045]</a>: Add an internal option to control input buffer in univocity</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35079">[SPARK-35079]</a>: Transform with udf gives incorrect result</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35080">[SPARK-35080]</a>: Correlated subqueries with equality predicates can return wrong results</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35087">[SPARK-35087]</a>: Fix some columns in table <code class="language-plaintext highlighter-rouge">Aggregated Metrics by Executor</code> of stage-detail page</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35093">[SPARK-35093]</a>: AQE columnar mismatch on exchange reuse</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35096">[SPARK-35096]</a>: foreachBatch throws ArrayIndexOutOfBoundsException if schema is case Insensitive</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35106">[SPARK-35106]</a>: HadoopMapReduceCommitProtocol performs bad rename when dynamic partition overwrite is used</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35117">[SPARK-35117]</a>: UI progress bar no longer highlights in progress tasks</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35127">[SPARK-35127]</a>: When switching between different stage-detail pages, the entry in newly-opened page may be blank</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35136">[SPARK-35136]</a>: Initial null value of LiveStage.info can lead to NPE</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35142">[SPARK-35142]</a>: <code class="language-plaintext highlighter-rouge">OneVsRest</code> classifier uses incorrect data type for <code class="language-plaintext highlighter-rouge">rawPrediction</code> column</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35168">[SPARK-35168]</a>: mapred.reduce.tasks should be shuffle.partitions not adaptive.coalescePartitions.initialPartitionNum</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35213">[SPARK-35213]</a>: Corrupt DataFrame for certain withField patterns</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35226">[SPARK-35226]</a>: JDBC datasources should accept refreshKrb5Config parameter</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35227">[SPARK-35227]</a>: Replace Bintray with the new repository service for the spark-packages resolver in SparkSubmit</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35244">[SPARK-35244]</a>: invoke should throw the original exception</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35278">[SPARK-35278]</a>: Invoke should find the method with correct number of parameters</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35288">[SPARK-35288]</a>: StaticInvoke should find the method without exact argument classes match</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35359">[SPARK-35359]</a>: Insert data with char/varchar datatype will fail when data length exceed length limitation</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35381">[SPARK-35381]</a>: Fix lambda variable name issues in nested DataFrame functions in R APIs</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35382">[SPARK-35382]</a>: Fix lambda variable name issues in nested DataFrame functions in Python APIs</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35411">[SPARK-35411]</a>: Essential information missing in TreeNode json string</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35482">[SPARK-35482]</a>: case sensitive block manager port key should be used in BasicExecutorFeatureStep</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35493">[SPARK-35493]</a>: spark.blockManager.port does not work for driver pod</li>
</ul>
<h3 id="dependency-changes">Dependency Changes</h3>
<p>While being a maintence release we did still upgrade some dependencies in this release they are:</p>
<ul>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34752">[SPARK-34752]</a>: Upgrade Jetty to 9.4.37 to fix CVE-2020-27223</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-34988">[SPARK-34988]</a>: Upgrade Jetty to 9.4.39 to fix CVE-2021-28165</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-35210">[SPARK-35210]</a>: Upgrade Jetty to 9.4.40 to fix ERR_CONNECTION_RESET issue</li>
</ul>
<p>You can consult JIRA for the <a href="https://s.apache.org/spark-3.1.2">detailed changes</a>.</p>
<p>We would like to acknowledge all community members for contributing patches to this release.</p>
<p>
<br/>
<a href="/news/">Spark News Archive</a>
</p>
</div>
<div class="col-12 col-md-3">
<div class="news" style="margin-bottom: 20px;">
<h5>Latest News</h5>
<ul class="list-unstyled">
<li><a href="/news/spark-3-5-1-released.html">Spark 3.5.1 released</a>
<span class="small">(Feb 23, 2024)</span></li>
<li><a href="/news/spark-3-3-4-released.html">Spark 3.3.4 released</a>
<span class="small">(Dec 16, 2023)</span></li>
<li><a href="/news/spark-3-4-2-released.html">Spark 3.4.2 released</a>
<span class="small">(Nov 30, 2023)</span></li>
<li><a href="/news/spark-3-5-0-released.html">Spark 3.5.0 released</a>
<span class="small">(Sep 13, 2023)</span></li>
</ul>
<p class="small" style="text-align: right;"><a href="/news/index.html">Archive</a></p>
</div>
<div style="text-align:center; margin-bottom: 20px;">
<a href="https://www.apache.org/events/current-event.html">
<img src="https://www.apache.org/events/current-event-234x60.png" style="max-width: 100%;"/>
</a>
</div>
<div class="hidden-xs hidden-sm">
<a href="/downloads.html" class="btn btn-cta btn-lg d-grid" style="margin-bottom: 30px;">
Download Spark
</a>
<p style="font-size: 16px; font-weight: 500; color: #555;">
Built-in Libraries:
</p>
<ul class="list-none">
<li><a href="/sql/">SQL and DataFrames</a></li>
<li><a href="/streaming/">Spark Streaming</a></li>
<li><a href="/mllib/">MLlib (machine learning)</a></li>
<li><a href="/graphx/">GraphX (graph)</a></li>
</ul>
<a href="/third-party-projects.html">Third-Party Projects</a>
</div>
</div>
</div>
<footer class="small">
<hr>
Apache Spark, Spark, Apache, the Apache feather logo, and the Apache Spark project logo are either registered
trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
See guidance on use of Apache Spark <a href="/trademarks.html">trademarks</a>.
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Copyright &copy; 2018 The Apache Software Foundation, Licensed under the
<a href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.
</footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery.js"></script>
<script src="/js/lang-tabs.js"></script>
<script src="/js/downloads.js"></script>
</body>
</html>