blob: 8407fc36eab146160f18859f33aaaad6ba7c5b36 [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.2.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="/spark-connect/">Spark Connect</a></li>
<li><a class="dropdown-item" href="/streaming/">Spark Streaming</a></li>
<li><a class="dropdown-item" href="/pandas-on-spark/">pandas on Spark</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.2.2</h2>
<p>Spark 3.2.2 is a maintenance release containing stability fixes. This release is based on the branch-3.2 maintenance branch of Spark. We strongly recommend all 3.2 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-37290">[SPARK-37290]</a>: Exponential planning time in case of non-deterministic function</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37544">[SPARK-37544]</a>: sequence over dates with month interval is producing incorrect results</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37643">[SPARK-37643]</a>: When charVarcharAsString is true, char datatype partition table query incorrect</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37670">[SPARK-37670]</a>: Support predicate pushdown and column pruning for de-duped CTEs</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37675">[SPARK-37675]</a>: Prevent overwriting of push shuffle merged files once the shuffle is finalized</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37793">[SPARK-37793]</a>: Invalid LocalMergedBlockData cause task hang</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37865">[SPARK-37865]</a>: Spark should not dedup the groupingExpressions when the first child of Union has duplicate columns</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37963">[SPARK-37963]</a>: Need to update Partition URI after renaming table in InMemoryCatalog</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37995">[SPARK-37995]</a>: TPCDS 1TB q72 fails when spark.sql.optimizer.dynamicPartitionPruning.reuseBroadcastOnly is false</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38018">[SPARK-38018]</a>: Fix ColumnVectorUtils.populate to handle CalendarIntervalType correctly</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38019">[SPARK-38019]</a>: ExecutorMonitor.timedOutExecutors should be deterministic</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38023">[SPARK-38023]</a>: ExecutorMonitor.onExecutorRemoved should handle ExecutorDecommission as finished</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38030">[SPARK-38030]</a>: Query with cast containing non-nullable columns fails with AQE on Spark 3.1.1</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38042">[SPARK-38042]</a>: Encoder cannot be found when a tuple component is a type alias for an Array</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38056">[SPARK-38056]</a>: Structured streaming not working in history server when using LevelDB</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38073">[SPARK-38073]</a>: Update atexit function to avoid issues with late binding</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38075">[SPARK-38075]</a>: Hive script transform with order by and limit will return fake rows</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38120">[SPARK-38120]</a>: HiveExternalCatalog.listPartitions is failing when partition column name is upper case and dot in partition value</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38178">[SPARK-38178]</a>: Correct the logic to measure the memory usage of RocksDB</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38180">[SPARK-38180]</a>: Allow safe up-cast expressions in correlated equality predicates</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38185">[SPARK-38185]</a>: Fix data incorrect if aggregate function is empty</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38204">[SPARK-38204]</a>: All state operators are at a risk of inconsistency between state partitioning and operator partitioning</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38221">[SPARK-38221]</a>: Group by a stream of complex expressions fails</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38236">[SPARK-38236]</a>: Absolute file paths specified in create/alter table are treated as relative</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38271">[SPARK-38271]</a>: PoissonSampler may output more rows than MaxRows</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38273">[SPARK-38273]</a>: decodeUnsafeRows&#8217;s iterators should close underlying input streams</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38285">[SPARK-38285]</a>: ClassCastException: GenericArrayData cannot be cast to InternalRow</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38286">[SPARK-38286]</a>: Union&#8217;s maxRows and maxRowsPerPartition may overflow</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38304">[SPARK-38304]</a>: Elt() should return null if index is null under ANSI mode</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38309">[SPARK-38309]</a>: SHS has incorrect percentiles for shuffle read bytes and shuffle total blocks metrics</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38320">[SPARK-38320]</a>: (flat)MapGroupsWithState can timeout groups which just received inputs in the same microbatch</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38325">[SPARK-38325]</a>: ANSI mode: avoid potential runtime error in HashJoin.extractKeyExprAt()</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38333">[SPARK-38333]</a>: DPP cause DataSourceScanExec java.lang.NullPointerException</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38347">[SPARK-38347]</a>: Nullability propagation in transformUpWithNewOutput</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38363">[SPARK-38363]</a>: Avoid runtime error in Dataset.summary() when ANSI mode is on</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38379">[SPARK-38379]</a>: Fix Kubernetes Client mode when mounting persistent volume with storage class</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38407">[SPARK-38407]</a>: ANSI Cast: loosen the limitation of casting non-null complex types</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38411">[SPARK-38411]</a>: Use UTF-8 when doMergeApplicationListingInternal reads event logs</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38412">[SPARK-38412]</a>: <code class="language-plaintext highlighter-rouge">from</code> and <code class="language-plaintext highlighter-rouge">to</code> is swapped in the StateSchemaCompatibilityChecker</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38446">[SPARK-38446]</a>: Deadlock between ExecutorClassLoader and FileDownloadCallback caused by Log4j</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38528">[SPARK-38528]</a>: NullPointerException when selecting a generator in a Stream of aggregate expressions</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38542">[SPARK-38542]</a>: UnsafeHashedRelation should serialize numKeys out</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38570">[SPARK-38570]</a>: Incorrect DynamicPartitionPruning caused by Literal</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38579">[SPARK-38579]</a>: Requesting Restful API can cause NullPointerException</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38587">[SPARK-38587]</a>: Validating new location for rename command should use formatted names</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38614">[SPARK-38614]</a>: Don&#8217;t push down limit through window that&#8217;s using percent_rank</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38631">[SPARK-38631]</a>: Arbitrary shell command injection via Utils.unpack()</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38652">[SPARK-38652]</a>: uploadFileUri should preserve file scheme</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38655">[SPARK-38655]</a>: OffsetWindowFunctionFrameBase cannot find the offset row whose input is not null</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38677">[SPARK-38677]</a>: pyspark hangs in local mode running rdd map operation</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38684">[SPARK-38684]</a>: Stream-stream outer join has a possible correctness issue due to weakly read consistent on outer iterators</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38787">[SPARK-38787]</a>: Possible correctness issue on stream-stream join when handling edge case</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38809">[SPARK-38809]</a>: Implement option to skip null values in symmetric hash impl of stream-stream joins</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38868">[SPARK-38868]</a>: <code class="language-plaintext highlighter-rouge">assert_true</code> fails unconditionnaly after <code class="language-plaintext highlighter-rouge">left_outer</code> joins</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38916">[SPARK-38916]</a>: Tasks not killed caused by race conditions between killTask() and launchTask()</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38922">[SPARK-38922]</a>: TaskLocation.apply throw NullPointerException</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38931">[SPARK-38931]</a>: RocksDB File manager would not create initial dfs directory with unknown number of keys on 1st empty checkpoint</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38936">[SPARK-38936]</a>: Script transform feed thread should have name</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38955">[SPARK-38955]</a>: Disable lineSep option in &#8216;from_csv&#8217; and &#8216;schema_of_csv&#8217;</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38977">[SPARK-38977]</a>: Fix schema pruning with correlated subqueries</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38990">[SPARK-38990]</a>: date_trunc and trunc both fail with format from column in inline table</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38992">[SPARK-38992]</a>: Avoid using bash -c in ShellBasedGroupsMappingProvider</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39030">[SPARK-39030]</a>: Rename sum to avoid shading the builtin Python function</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39061">[SPARK-39061]</a>: Incorrect results or NPE when using Inline function against an array of dynamically created structs</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39083">[SPARK-39083]</a>: Fix FsHistoryProvider race condition between update and clean app data</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39084">[SPARK-39084]</a>: df.rdd.isEmpty() results in unexpected executor failure and JVM crash</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39104">[SPARK-39104]</a>: Null Pointer Exeption on unpersist call</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39107">[SPARK-39107]</a>: Silent change in regexp_replace&#8217;s handling of empty strings</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39174">[SPARK-39174]</a>: Catalogs loading swallows missing classname for ClassNotFoundException</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39259">[SPARK-39259]</a>: Timestamps returned by now() and equivalent functions are not consistent in subqueries</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39283">[SPARK-39283]</a>: Spark tasks stuck forever due to deadlock between TaskMemoryManager and UnsafeExternalSorter</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39293">[SPARK-39293]</a>: The accumulator of ArrayAggregate should copy the intermediate result if string, struct, array, or map</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39340">[SPARK-39340]</a>: DS v2 agg pushdown should allow dots in the name of top-level columns</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39376">[SPARK-39376]</a>: Do not output duplicated columns in star expansion of subquery alias of NATURAL/USING JOIN</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39393">[SPARK-39393]</a>: Parquet data source only supports push-down predicate filters for non-repeated primitive types</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39419">[SPARK-39419]</a>: When the comparator of ArraySort returns null, it should fail.</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39422">[SPARK-39422]</a>: SHOW CREATE TABLE should suggest &#8216;AS SERDE&#8217; for Hive tables with unsupported serde configurations</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39447">[SPARK-39447]</a>: Only non-broadcast query stage can propagate empty relation</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39476">[SPARK-39476]</a>: Disable Unwrap cast optimize when casting from Long to Float/ Double or from Integer to Float</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39496">[SPARK-39496]</a>: Inline eval path cannot handle null structs</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39505">[SPARK-39505]</a>: Escape log content rendered in UI</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39543">[SPARK-39543]</a>: The option of DataFrameWriterV2 should be passed to storage properties if fallback to v1</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39548">[SPARK-39548]</a>: CreateView Command with a window clause query hit a wrong window definition not found issue</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39570">[SPARK-39570]</a>: inline table should allow expressions with alias</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39575">[SPARK-39575]</a>: ByteBuffer forget to rewind after get in AvroDeserializer</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39650">[SPARK-39650]</a>: Streaming Deduplication should not check the schema of &#8220;value&#8221;</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39672">[SPARK-39672]</a>: NotExists subquery failed with conflicting attributes</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39758">[SPARK-39758]</a>: NPE on invalid patterns from the regexp functions</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-36808">[SPARK-36808]</a>: Upgrade Kafka to 2.8.1</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37934">[SPARK-37934]</a>: Upgrade Jetty version to 9.4.44</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38563">[SPARK-38563]</a>: Upgrade Py4J to 0.10.9.5</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-37977">[SPARK-37977]</a>: Upgrade ORC to 1.6.13</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-38905">[SPARK-38905]</a>: Upgrade ORC to 1.6.14</li>
<li><a href="https://issues.apache.org/jira/browse/SPARK-39183">[SPARK-39183]</a>: Upgrade Apache Xerces Java to 2.12.2</li>
</ul>
<p>You can consult JIRA for the <a href="https://s.apache.org/spark-3.2.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-4-3-released.html">Spark 3.4.3 released</a>
<span class="small">(Apr 18, 2024)</span></li>
<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>
</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>