blob: b5f4e20f2a0be6a125cd5ecfb762dc3ae785e63c [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>Integrating PyArrow with Java &#8212; Apache Arrow v17.0.0.dev59</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/clipboard.min.js"></script>
<script src="../../_static/copybutton.js"></script>
<script src="../../_static/design-tabs.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'python/integration/python_java';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.2';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://arrow.apache.org/docs/python/integration/python_java.html" />
<link rel="icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Using pyarrow from C++ and Cython Code" href="extending.html" />
<link rel="prev" title="Integrating PyArrow with R" href="python_r.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_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', '20']);
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 data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
Back to top
</button>
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center"
action="../../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
id="search-input"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form></div>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar">
<div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../../index.html">
<img src="../../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v17.0.0.dev59 - Home"/>
<script>document.write(`<img src="../../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev59 - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
Implementations
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../cpp/index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<label class="sidebar-toggle secondary-toggle" for="__secondary" tabindex="0">
<span class="fa-solid fa-outdent"></span>
</label>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
Implementations
</button>
<ul id="pst-nav-more-links-2" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../cpp/index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="../index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../install.html">Installing PyArrow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getstarted.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../data.html">Data Types and In-Memory Data Model</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compute.html">Compute Functions</a></li>
<li class="toctree-l1"><a class="reference internal" href="../memory.html">Memory and IO Interfaces</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ipc.html">Streaming, Serialization, and IPC</a></li>
<li class="toctree-l1"><a class="reference internal" href="../filesystems.html">Filesystem Interface</a></li>
<li class="toctree-l1"><a class="reference internal" href="../numpy.html">NumPy Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pandas.html">Pandas Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../interchange_protocol.html">Dataframe Interchange Protocol</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dlpack.html">The DLPack Protocol</a></li>
<li class="toctree-l1"><a class="reference internal" href="../timestamps.html">Timestamps</a></li>
<li class="toctree-l1"><a class="reference internal" href="../orc.html">Reading and Writing the Apache ORC Format</a></li>
<li class="toctree-l1"><a class="reference internal" href="../csv.html">Reading and Writing CSV files</a></li>
<li class="toctree-l1"><a class="reference internal" href="../feather.html">Feather File Format</a></li>
<li class="toctree-l1"><a class="reference internal" href="../json.html">Reading JSON files</a></li>
<li class="toctree-l1"><a class="reference internal" href="../parquet.html">Reading and Writing the Apache Parquet Format</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dataset.html">Tabular Datasets</a></li>
<li class="toctree-l1"><a class="reference internal" href="../flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l1"><a class="reference internal" href="../extending_types.html">Extending pyarrow</a></li>
<li class="toctree-l1 current active has-children"><a class="reference internal" href="../integration.html">PyArrow Integrations</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-1"><i class="fa-solid fa-chevron-down"></i></label><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="python_r.html">Integrating PyArrow with R</a></li>
<li class="toctree-l2 current active"><a class="current reference internal" href="#">Integrating PyArrow with Java</a></li>
<li class="toctree-l2"><a class="reference internal" href="extending.html">Using pyarrow from C++ and Cython Code</a></li>
<li class="toctree-l2"><a class="reference internal" href="cuda.html">CUDA Integration</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../env_vars.html">Environment Variables</a></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../api.html">API Reference</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-2"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/datatypes.html">Data Types and Schemas</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-3"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.null.html">pyarrow.null</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.bool_.html">pyarrow.bool_</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.int8.html">pyarrow.int8</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.int16.html">pyarrow.int16</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.int32.html">pyarrow.int32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.int64.html">pyarrow.int64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.uint8.html">pyarrow.uint8</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.uint16.html">pyarrow.uint16</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.uint32.html">pyarrow.uint32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.uint64.html">pyarrow.uint64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.float16.html">pyarrow.float16</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.float32.html">pyarrow.float32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.float64.html">pyarrow.float64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.time32.html">pyarrow.time32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.time64.html">pyarrow.time64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.timestamp.html">pyarrow.timestamp</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.date32.html">pyarrow.date32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.date64.html">pyarrow.date64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.duration.html">pyarrow.duration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.month_day_nano_interval.html">pyarrow.month_day_nano_interval</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.binary.html">pyarrow.binary</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.string.html">pyarrow.string</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.utf8.html">pyarrow.utf8</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.large_binary.html">pyarrow.large_binary</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.large_string.html">pyarrow.large_string</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.large_utf8.html">pyarrow.large_utf8</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.binary_view.html">pyarrow.binary_view</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.string_view.html">pyarrow.string_view</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.decimal128.html">pyarrow.decimal128</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.list_.html">pyarrow.list_</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.large_list.html">pyarrow.large_list</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.list_view.html">pyarrow.list_view</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.large_list_view.html">pyarrow.large_list_view</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.map_.html">pyarrow.map_</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.struct.html">pyarrow.struct</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dictionary.html">pyarrow.dictionary</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.run_end_encoded.html">pyarrow.run_end_encoded</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.field.html">pyarrow.field</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.schema.html">pyarrow.schema</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.from_numpy_dtype.html">pyarrow.from_numpy_dtype</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.unify_schemas.html">pyarrow.unify_schemas</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.DataType.html">pyarrow.DataType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.DictionaryType.html">pyarrow.DictionaryType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ListType.html">pyarrow.ListType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.MapType.html">pyarrow.MapType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.StructType.html">pyarrow.StructType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UnionType.html">pyarrow.UnionType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.TimestampType.html">pyarrow.TimestampType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Time32Type.html">pyarrow.Time32Type</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Time64Type.html">pyarrow.Time64Type</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FixedSizeBinaryType.html">pyarrow.FixedSizeBinaryType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Decimal128Type.html">pyarrow.Decimal128Type</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Field.html">pyarrow.Field</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Schema.html">pyarrow.Schema</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.RunEndEncodedType.html">pyarrow.RunEndEncodedType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ExtensionType.html">pyarrow.ExtensionType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.PyExtensionType.html">pyarrow.PyExtensionType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.register_extension_type.html">pyarrow.register_extension_type</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.unregister_extension_type.html">pyarrow.unregister_extension_type</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_boolean.html">pyarrow.types.is_boolean</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_integer.html">pyarrow.types.is_integer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_signed_integer.html">pyarrow.types.is_signed_integer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_unsigned_integer.html">pyarrow.types.is_unsigned_integer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_int8.html">pyarrow.types.is_int8</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_int16.html">pyarrow.types.is_int16</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_int32.html">pyarrow.types.is_int32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_int64.html">pyarrow.types.is_int64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_uint8.html">pyarrow.types.is_uint8</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_uint16.html">pyarrow.types.is_uint16</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_uint32.html">pyarrow.types.is_uint32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_uint64.html">pyarrow.types.is_uint64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_floating.html">pyarrow.types.is_floating</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_float16.html">pyarrow.types.is_float16</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_float32.html">pyarrow.types.is_float32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_float64.html">pyarrow.types.is_float64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_decimal.html">pyarrow.types.is_decimal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_decimal128.html">pyarrow.types.is_decimal128</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_decimal256.html">pyarrow.types.is_decimal256</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_list.html">pyarrow.types.is_list</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_large_list.html">pyarrow.types.is_large_list</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_fixed_size_list.html">pyarrow.types.is_fixed_size_list</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_list_view.html">pyarrow.types.is_list_view</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_large_list_view.html">pyarrow.types.is_large_list_view</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_struct.html">pyarrow.types.is_struct</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_union.html">pyarrow.types.is_union</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_nested.html">pyarrow.types.is_nested</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_run_end_encoded.html">pyarrow.types.is_run_end_encoded</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_temporal.html">pyarrow.types.is_temporal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_timestamp.html">pyarrow.types.is_timestamp</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_date.html">pyarrow.types.is_date</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_date32.html">pyarrow.types.is_date32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_date64.html">pyarrow.types.is_date64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_time.html">pyarrow.types.is_time</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_time32.html">pyarrow.types.is_time32</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_time64.html">pyarrow.types.is_time64</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_duration.html">pyarrow.types.is_duration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_interval.html">pyarrow.types.is_interval</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_null.html">pyarrow.types.is_null</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_binary.html">pyarrow.types.is_binary</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_unicode.html">pyarrow.types.is_unicode</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_string.html">pyarrow.types.is_string</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_large_binary.html">pyarrow.types.is_large_binary</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_large_unicode.html">pyarrow.types.is_large_unicode</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_large_string.html">pyarrow.types.is_large_string</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_binary_view.html">pyarrow.types.is_binary_view</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_string_view.html">pyarrow.types.is_string_view</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_fixed_size_binary.html">pyarrow.types.is_fixed_size_binary</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_map.html">pyarrow.types.is_map</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_dictionary.html">pyarrow.types.is_dictionary</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.types.is_primitive.html">pyarrow.types.is_primitive</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/arrays.html">Arrays and Scalars</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.array.html">pyarrow.array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.nulls.html">pyarrow.nulls</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Array.html">pyarrow.Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.BooleanArray.html">pyarrow.BooleanArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FloatingPointArray.html">pyarrow.FloatingPointArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.IntegerArray.html">pyarrow.IntegerArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Int8Array.html">pyarrow.Int8Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Int16Array.html">pyarrow.Int16Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Int32Array.html">pyarrow.Int32Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Int64Array.html">pyarrow.Int64Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.NullArray.html">pyarrow.NullArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.NumericArray.html">pyarrow.NumericArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UInt8Array.html">pyarrow.UInt8Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UInt16Array.html">pyarrow.UInt16Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UInt32Array.html">pyarrow.UInt32Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UInt64Array.html">pyarrow.UInt64Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.HalfFloatArray.html">pyarrow.HalfFloatArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FloatArray.html">pyarrow.FloatArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.DoubleArray.html">pyarrow.DoubleArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.BinaryArray.html">pyarrow.BinaryArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.StringArray.html">pyarrow.StringArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FixedSizeBinaryArray.html">pyarrow.FixedSizeBinaryArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.LargeBinaryArray.html">pyarrow.LargeBinaryArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.LargeStringArray.html">pyarrow.LargeStringArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Time32Array.html">pyarrow.Time32Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Time64Array.html">pyarrow.Time64Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Date32Array.html">pyarrow.Date32Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Date64Array.html">pyarrow.Date64Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.TimestampArray.html">pyarrow.TimestampArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.DurationArray.html">pyarrow.DurationArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.MonthDayNanoIntervalArray.html">pyarrow.MonthDayNanoIntervalArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Decimal128Array.html">pyarrow.Decimal128Array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.DictionaryArray.html">pyarrow.DictionaryArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ListArray.html">pyarrow.ListArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FixedSizeListArray.html">pyarrow.FixedSizeListArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.LargeListArray.html">pyarrow.LargeListArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ListViewArray.html">pyarrow.ListViewArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.LargeListViewArray.html">pyarrow.LargeListViewArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.MapArray.html">pyarrow.MapArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.RunEndEncodedArray.html">pyarrow.RunEndEncodedArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.StructArray.html">pyarrow.StructArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UnionArray.html">pyarrow.UnionArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ExtensionArray.html">pyarrow.ExtensionArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FixedShapeTensorArray.html">pyarrow.FixedShapeTensorArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.scalar.html">pyarrow.scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.NA.html">pyarrow.NA</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Scalar.html">pyarrow.Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.BooleanScalar.html">pyarrow.BooleanScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Int8Scalar.html">pyarrow.Int8Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Int16Scalar.html">pyarrow.Int16Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Int32Scalar.html">pyarrow.Int32Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Int64Scalar.html">pyarrow.Int64Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UInt8Scalar.html">pyarrow.UInt8Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UInt16Scalar.html">pyarrow.UInt16Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UInt32Scalar.html">pyarrow.UInt32Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UInt64Scalar.html">pyarrow.UInt64Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.HalfFloatScalar.html">pyarrow.HalfFloatScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FloatScalar.html">pyarrow.FloatScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.DoubleScalar.html">pyarrow.DoubleScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.BinaryScalar.html">pyarrow.BinaryScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.StringScalar.html">pyarrow.StringScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FixedSizeBinaryScalar.html">pyarrow.FixedSizeBinaryScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.LargeBinaryScalar.html">pyarrow.LargeBinaryScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.LargeStringScalar.html">pyarrow.LargeStringScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.BinaryViewScalar.html">pyarrow.BinaryViewScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.StringViewScalar.html">pyarrow.StringViewScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Time32Scalar.html">pyarrow.Time32Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Time64Scalar.html">pyarrow.Time64Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Date32Scalar.html">pyarrow.Date32Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Date64Scalar.html">pyarrow.Date64Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.TimestampScalar.html">pyarrow.TimestampScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.DurationScalar.html">pyarrow.DurationScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.MonthDayNanoIntervalScalar.html">pyarrow.MonthDayNanoIntervalScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Decimal128Scalar.html">pyarrow.Decimal128Scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.DictionaryScalar.html">pyarrow.DictionaryScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.RunEndEncodedScalar.html">pyarrow.RunEndEncodedScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ListScalar.html">pyarrow.ListScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.LargeListScalar.html">pyarrow.LargeListScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ListViewScalar.html">pyarrow.ListViewScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.LargeListViewScalar.html">pyarrow.LargeListViewScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.MapScalar.html">pyarrow.MapScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.StructScalar.html">pyarrow.StructScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.UnionScalar.html">pyarrow.UnionScalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ExtensionScalar.html">pyarrow.ExtensionScalar</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/memory.html">Buffers and Memory</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-5"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.allocate_buffer.html">pyarrow.allocate_buffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.py_buffer.html">pyarrow.py_buffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.foreign_buffer.html">pyarrow.foreign_buffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Buffer.html">pyarrow.Buffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ResizableBuffer.html">pyarrow.ResizableBuffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Codec.html">pyarrow.Codec</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compress.html">pyarrow.compress</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.decompress.html">pyarrow.decompress</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.MemoryPool.html">pyarrow.MemoryPool</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.default_memory_pool.html">pyarrow.default_memory_pool</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.jemalloc_memory_pool.html">pyarrow.jemalloc_memory_pool</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.mimalloc_memory_pool.html">pyarrow.mimalloc_memory_pool</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.system_memory_pool.html">pyarrow.system_memory_pool</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.jemalloc_set_decay_ms.html">pyarrow.jemalloc_set_decay_ms</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.set_memory_pool.html">pyarrow.set_memory_pool</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.log_memory_allocations.html">pyarrow.log_memory_allocations</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.total_allocated_bytes.html">pyarrow.total_allocated_bytes</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/tables.html">Tables and Tensors</a><input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-6"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.chunked_array.html">pyarrow.chunked_array</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.concat_arrays.html">pyarrow.concat_arrays</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.concat_tables.html">pyarrow.concat_tables</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.record_batch.html">pyarrow.record_batch</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.table.html">pyarrow.table</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ChunkedArray.html">pyarrow.ChunkedArray</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.RecordBatch.html">pyarrow.RecordBatch</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Table.html">pyarrow.Table</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.TableGroupBy.html">pyarrow.TableGroupBy</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.RecordBatchReader.html">pyarrow.RecordBatchReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.interchange.from_dataframe.html">pyarrow.interchange.from_dataframe</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.Tensor.html">pyarrow.Tensor</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/compute.html">Compute Functions</a><input class="toctree-checkbox" id="toctree-checkbox-7" name="toctree-checkbox-7" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-7"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.all.html">pyarrow.compute.all</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.any.html">pyarrow.compute.any</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.approximate_median.html">pyarrow.compute.approximate_median</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.count.html">pyarrow.compute.count</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.count_distinct.html">pyarrow.compute.count_distinct</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.index.html">pyarrow.compute.index</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.max.html">pyarrow.compute.max</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.mean.html">pyarrow.compute.mean</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.min.html">pyarrow.compute.min</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.min_max.html">pyarrow.compute.min_max</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.mode.html">pyarrow.compute.mode</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.product.html">pyarrow.compute.product</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.quantile.html">pyarrow.compute.quantile</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.stddev.html">pyarrow.compute.stddev</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.sum.html">pyarrow.compute.sum</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.tdigest.html">pyarrow.compute.tdigest</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.variance.html">pyarrow.compute.variance</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cumulative_sum.html">pyarrow.compute.cumulative_sum</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cumulative_sum_checked.html">pyarrow.compute.cumulative_sum_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cumulative_prod.html">pyarrow.compute.cumulative_prod</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cumulative_prod_checked.html">pyarrow.compute.cumulative_prod_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cumulative_max.html">pyarrow.compute.cumulative_max</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cumulative_min.html">pyarrow.compute.cumulative_min</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.abs.html">pyarrow.compute.abs</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.abs_checked.html">pyarrow.compute.abs_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.add.html">pyarrow.compute.add</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.add_checked.html">pyarrow.compute.add_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.divide.html">pyarrow.compute.divide</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.divide_checked.html">pyarrow.compute.divide_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.multiply.html">pyarrow.compute.multiply</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.multiply_checked.html">pyarrow.compute.multiply_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.negate.html">pyarrow.compute.negate</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.negate_checked.html">pyarrow.compute.negate_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.power.html">pyarrow.compute.power</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.power_checked.html">pyarrow.compute.power_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.sign.html">pyarrow.compute.sign</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.sqrt.html">pyarrow.compute.sqrt</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.sqrt_checked.html">pyarrow.compute.sqrt_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.subtract.html">pyarrow.compute.subtract</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.subtract_checked.html">pyarrow.compute.subtract_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.bit_wise_and.html">pyarrow.compute.bit_wise_and</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.bit_wise_not.html">pyarrow.compute.bit_wise_not</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.bit_wise_or.html">pyarrow.compute.bit_wise_or</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.bit_wise_xor.html">pyarrow.compute.bit_wise_xor</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.shift_left.html">pyarrow.compute.shift_left</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.shift_left_checked.html">pyarrow.compute.shift_left_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.shift_right.html">pyarrow.compute.shift_right</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.shift_right_checked.html">pyarrow.compute.shift_right_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ceil.html">pyarrow.compute.ceil</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.floor.html">pyarrow.compute.floor</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.round.html">pyarrow.compute.round</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.round_to_multiple.html">pyarrow.compute.round_to_multiple</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.trunc.html">pyarrow.compute.trunc</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ln.html">pyarrow.compute.ln</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ln_checked.html">pyarrow.compute.ln_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.log10.html">pyarrow.compute.log10</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.log10_checked.html">pyarrow.compute.log10_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.log1p.html">pyarrow.compute.log1p</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.log1p_checked.html">pyarrow.compute.log1p_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.log2.html">pyarrow.compute.log2</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.log2_checked.html">pyarrow.compute.log2_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.logb.html">pyarrow.compute.logb</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.logb_checked.html">pyarrow.compute.logb_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.acos.html">pyarrow.compute.acos</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.acos_checked.html">pyarrow.compute.acos_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.asin.html">pyarrow.compute.asin</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.asin_checked.html">pyarrow.compute.asin_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.atan.html">pyarrow.compute.atan</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.atan2.html">pyarrow.compute.atan2</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cos.html">pyarrow.compute.cos</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cos_checked.html">pyarrow.compute.cos_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.sin.html">pyarrow.compute.sin</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.sin_checked.html">pyarrow.compute.sin_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.tan.html">pyarrow.compute.tan</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.tan_checked.html">pyarrow.compute.tan_checked</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.equal.html">pyarrow.compute.equal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.greater.html">pyarrow.compute.greater</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.greater_equal.html">pyarrow.compute.greater_equal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.less.html">pyarrow.compute.less</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.less_equal.html">pyarrow.compute.less_equal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.not_equal.html">pyarrow.compute.not_equal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.max_element_wise.html">pyarrow.compute.max_element_wise</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.min_element_wise.html">pyarrow.compute.min_element_wise</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.and_.html">pyarrow.compute.and_</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.and_kleene.html">pyarrow.compute.and_kleene</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.and_not.html">pyarrow.compute.and_not</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.and_not_kleene.html">pyarrow.compute.and_not_kleene</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.invert.html">pyarrow.compute.invert</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.or_.html">pyarrow.compute.or_</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.or_kleene.html">pyarrow.compute.or_kleene</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.xor.html">pyarrow.compute.xor</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_is_alnum.html">pyarrow.compute.ascii_is_alnum</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_is_alpha.html">pyarrow.compute.ascii_is_alpha</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_is_decimal.html">pyarrow.compute.ascii_is_decimal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_is_lower.html">pyarrow.compute.ascii_is_lower</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_is_printable.html">pyarrow.compute.ascii_is_printable</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_is_space.html">pyarrow.compute.ascii_is_space</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_is_upper.html">pyarrow.compute.ascii_is_upper</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_alnum.html">pyarrow.compute.utf8_is_alnum</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_alpha.html">pyarrow.compute.utf8_is_alpha</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_decimal.html">pyarrow.compute.utf8_is_decimal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_digit.html">pyarrow.compute.utf8_is_digit</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_lower.html">pyarrow.compute.utf8_is_lower</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_numeric.html">pyarrow.compute.utf8_is_numeric</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_printable.html">pyarrow.compute.utf8_is_printable</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_space.html">pyarrow.compute.utf8_is_space</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_upper.html">pyarrow.compute.utf8_is_upper</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_is_title.html">pyarrow.compute.ascii_is_title</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_is_title.html">pyarrow.compute.utf8_is_title</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.string_is_ascii.html">pyarrow.compute.string_is_ascii</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_capitalize.html">pyarrow.compute.ascii_capitalize</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_lower.html">pyarrow.compute.ascii_lower</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_reverse.html">pyarrow.compute.ascii_reverse</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_swapcase.html">pyarrow.compute.ascii_swapcase</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_title.html">pyarrow.compute.ascii_title</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_upper.html">pyarrow.compute.ascii_upper</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.binary_length.html">pyarrow.compute.binary_length</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.binary_repeat.html">pyarrow.compute.binary_repeat</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.binary_replace_slice.html">pyarrow.compute.binary_replace_slice</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.binary_reverse.html">pyarrow.compute.binary_reverse</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.replace_substring.html">pyarrow.compute.replace_substring</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.replace_substring_regex.html">pyarrow.compute.replace_substring_regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_capitalize.html">pyarrow.compute.utf8_capitalize</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_length.html">pyarrow.compute.utf8_length</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_lower.html">pyarrow.compute.utf8_lower</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_replace_slice.html">pyarrow.compute.utf8_replace_slice</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_reverse.html">pyarrow.compute.utf8_reverse</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_swapcase.html">pyarrow.compute.utf8_swapcase</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_title.html">pyarrow.compute.utf8_title</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_upper.html">pyarrow.compute.utf8_upper</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_center.html">pyarrow.compute.ascii_center</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_lpad.html">pyarrow.compute.ascii_lpad</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_rpad.html">pyarrow.compute.ascii_rpad</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_center.html">pyarrow.compute.utf8_center</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_lpad.html">pyarrow.compute.utf8_lpad</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_rpad.html">pyarrow.compute.utf8_rpad</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_ltrim.html">pyarrow.compute.ascii_ltrim</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_ltrim_whitespace.html">pyarrow.compute.ascii_ltrim_whitespace</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_rtrim.html">pyarrow.compute.ascii_rtrim</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_rtrim_whitespace.html">pyarrow.compute.ascii_rtrim_whitespace</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_trim.html">pyarrow.compute.ascii_trim</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_trim_whitespace.html">pyarrow.compute.ascii_trim_whitespace</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_ltrim.html">pyarrow.compute.utf8_ltrim</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_ltrim_whitespace.html">pyarrow.compute.utf8_ltrim_whitespace</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_rtrim.html">pyarrow.compute.utf8_rtrim</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_rtrim_whitespace.html">pyarrow.compute.utf8_rtrim_whitespace</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_trim.html">pyarrow.compute.utf8_trim</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_trim_whitespace.html">pyarrow.compute.utf8_trim_whitespace</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ascii_split_whitespace.html">pyarrow.compute.ascii_split_whitespace</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.split_pattern.html">pyarrow.compute.split_pattern</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.split_pattern_regex.html">pyarrow.compute.split_pattern_regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_split_whitespace.html">pyarrow.compute.utf8_split_whitespace</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.extract_regex.html">pyarrow.compute.extract_regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.binary_join.html">pyarrow.compute.binary_join</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.binary_join_element_wise.html">pyarrow.compute.binary_join_element_wise</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.binary_slice.html">pyarrow.compute.binary_slice</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.utf8_slice_codeunits.html">pyarrow.compute.utf8_slice_codeunits</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.count_substring.html">pyarrow.compute.count_substring</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.count_substring_regex.html">pyarrow.compute.count_substring_regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ends_with.html">pyarrow.compute.ends_with</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.find_substring.html">pyarrow.compute.find_substring</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.find_substring_regex.html">pyarrow.compute.find_substring_regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.index_in.html">pyarrow.compute.index_in</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.is_in.html">pyarrow.compute.is_in</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.match_like.html">pyarrow.compute.match_like</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.match_substring.html">pyarrow.compute.match_substring</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.match_substring_regex.html">pyarrow.compute.match_substring_regex</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.starts_with.html">pyarrow.compute.starts_with</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.indices_nonzero.html">pyarrow.compute.indices_nonzero</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.is_finite.html">pyarrow.compute.is_finite</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.is_inf.html">pyarrow.compute.is_inf</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.is_nan.html">pyarrow.compute.is_nan</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.is_null.html">pyarrow.compute.is_null</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.is_valid.html">pyarrow.compute.is_valid</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.true_unless_null.html">pyarrow.compute.true_unless_null</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.case_when.html">pyarrow.compute.case_when</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.choose.html">pyarrow.compute.choose</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.coalesce.html">pyarrow.compute.coalesce</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.if_else.html">pyarrow.compute.if_else</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.cast.html">pyarrow.compute.cast</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ceil_temporal.html">pyarrow.compute.ceil_temporal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.floor_temporal.html">pyarrow.compute.floor_temporal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.round_temporal.html">pyarrow.compute.round_temporal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.run_end_decode.html">pyarrow.compute.run_end_decode</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.run_end_encode.html">pyarrow.compute.run_end_encode</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.strftime.html">pyarrow.compute.strftime</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.strptime.html">pyarrow.compute.strptime</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.day.html">pyarrow.compute.day</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.day_of_week.html">pyarrow.compute.day_of_week</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.day_of_year.html">pyarrow.compute.day_of_year</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.hour.html">pyarrow.compute.hour</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.iso_week.html">pyarrow.compute.iso_week</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.iso_year.html">pyarrow.compute.iso_year</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.iso_calendar.html">pyarrow.compute.iso_calendar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.is_leap_year.html">pyarrow.compute.is_leap_year</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.microsecond.html">pyarrow.compute.microsecond</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.millisecond.html">pyarrow.compute.millisecond</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.minute.html">pyarrow.compute.minute</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.month.html">pyarrow.compute.month</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.nanosecond.html">pyarrow.compute.nanosecond</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.quarter.html">pyarrow.compute.quarter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.second.html">pyarrow.compute.second</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.subsecond.html">pyarrow.compute.subsecond</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.us_week.html">pyarrow.compute.us_week</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.us_year.html">pyarrow.compute.us_year</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.week.html">pyarrow.compute.week</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.year.html">pyarrow.compute.year</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.year_month_day.html">pyarrow.compute.year_month_day</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.day_time_interval_between.html">pyarrow.compute.day_time_interval_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.days_between.html">pyarrow.compute.days_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.hours_between.html">pyarrow.compute.hours_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.microseconds_between.html">pyarrow.compute.microseconds_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.milliseconds_between.html">pyarrow.compute.milliseconds_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.minutes_between.html">pyarrow.compute.minutes_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.month_day_nano_interval_between.html">pyarrow.compute.month_day_nano_interval_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.month_interval_between.html">pyarrow.compute.month_interval_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.nanoseconds_between.html">pyarrow.compute.nanoseconds_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.quarters_between.html">pyarrow.compute.quarters_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.seconds_between.html">pyarrow.compute.seconds_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.weeks_between.html">pyarrow.compute.weeks_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.years_between.html">pyarrow.compute.years_between</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.assume_timezone.html">pyarrow.compute.assume_timezone</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.local_timestamp.html">pyarrow.compute.local_timestamp</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.dictionary_encode.html">pyarrow.compute.dictionary_encode</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.unique.html">pyarrow.compute.unique</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.value_counts.html">pyarrow.compute.value_counts</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.array_filter.html">pyarrow.compute.array_filter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.array_take.html">pyarrow.compute.array_take</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.drop_null.html">pyarrow.compute.drop_null</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.filter.html">pyarrow.compute.filter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.take.html">pyarrow.compute.take</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.array_sort_indices.html">pyarrow.compute.array_sort_indices</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.partition_nth_indices.html">pyarrow.compute.partition_nth_indices</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.select_k_unstable.html">pyarrow.compute.select_k_unstable</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.sort_indices.html">pyarrow.compute.sort_indices</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.fill_null.html">pyarrow.compute.fill_null</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.fill_null_backward.html">pyarrow.compute.fill_null_backward</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.fill_null_forward.html">pyarrow.compute.fill_null_forward</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.list_element.html">pyarrow.compute.list_element</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.list_flatten.html">pyarrow.compute.list_flatten</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.list_parent_indices.html">pyarrow.compute.list_parent_indices</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.list_slice.html">pyarrow.compute.list_slice</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.list_value_length.html">pyarrow.compute.list_value_length</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.make_struct.html">pyarrow.compute.make_struct</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.map_lookup.html">pyarrow.compute.map_lookup</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.replace_with_mask.html">pyarrow.compute.replace_with_mask</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.struct_field.html">pyarrow.compute.struct_field</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.pairwise_diff.html">pyarrow.compute.pairwise_diff</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ArraySortOptions.html">pyarrow.compute.ArraySortOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.AssumeTimezoneOptions.html">pyarrow.compute.AssumeTimezoneOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.CastOptions.html">pyarrow.compute.CastOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.CountOptions.html">pyarrow.compute.CountOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.CountOptions.html">pyarrow.compute.CountOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.CumulativeSumOptions.html">pyarrow.compute.CumulativeSumOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.DayOfWeekOptions.html">pyarrow.compute.DayOfWeekOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.DictionaryEncodeOptions.html">pyarrow.compute.DictionaryEncodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ElementWiseAggregateOptions.html">pyarrow.compute.ElementWiseAggregateOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ExtractRegexOptions.html">pyarrow.compute.ExtractRegexOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.FilterOptions.html">pyarrow.compute.FilterOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.IndexOptions.html">pyarrow.compute.IndexOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.JoinOptions.html">pyarrow.compute.JoinOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ListSliceOptions.html">pyarrow.compute.ListSliceOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.MakeStructOptions.html">pyarrow.compute.MakeStructOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.MapLookupOptions.html">pyarrow.compute.MapLookupOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.MatchSubstringOptions.html">pyarrow.compute.MatchSubstringOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ModeOptions.html">pyarrow.compute.ModeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.NullOptions.html">pyarrow.compute.NullOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.PadOptions.html">pyarrow.compute.PadOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.PairwiseOptions.html">pyarrow.compute.PairwiseOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.PartitionNthOptions.html">pyarrow.compute.PartitionNthOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.QuantileOptions.html">pyarrow.compute.QuantileOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ReplaceSliceOptions.html">pyarrow.compute.ReplaceSliceOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ReplaceSubstringOptions.html">pyarrow.compute.ReplaceSubstringOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.RoundOptions.html">pyarrow.compute.RoundOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.RoundTemporalOptions.html">pyarrow.compute.RoundTemporalOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.RoundToMultipleOptions.html">pyarrow.compute.RoundToMultipleOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.RunEndEncodeOptions.html">pyarrow.compute.RunEndEncodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ScalarAggregateOptions.html">pyarrow.compute.ScalarAggregateOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.ScalarAggregateOptions.html">pyarrow.compute.ScalarAggregateOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.SelectKOptions.html">pyarrow.compute.SelectKOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.SetLookupOptions.html">pyarrow.compute.SetLookupOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.SliceOptions.html">pyarrow.compute.SliceOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.SortOptions.html">pyarrow.compute.SortOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.SplitOptions.html">pyarrow.compute.SplitOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.SplitPatternOptions.html">pyarrow.compute.SplitPatternOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.StrftimeOptions.html">pyarrow.compute.StrftimeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.StrptimeOptions.html">pyarrow.compute.StrptimeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.StructFieldOptions.html">pyarrow.compute.StructFieldOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.TakeOptions.html">pyarrow.compute.TakeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.TDigestOptions.html">pyarrow.compute.TDigestOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.TDigestOptions.html">pyarrow.compute.TDigestOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.TrimOptions.html">pyarrow.compute.TrimOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.VarianceOptions.html">pyarrow.compute.VarianceOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.WeekOptions.html">pyarrow.compute.WeekOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.register_scalar_function.html">pyarrow.compute.register_scalar_function</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.compute.UdfContext.html">pyarrow.compute.UdfContext</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/acero.html">Acero - Streaming Execution Engine</a><input class="toctree-checkbox" id="toctree-checkbox-8" name="toctree-checkbox-8" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-8"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.Declaration.html">pyarrow.acero.Declaration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.ExecNodeOptions.html">pyarrow.acero.ExecNodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.TableSourceNodeOptions.html">pyarrow.acero.TableSourceNodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.ScanNodeOptions.html">pyarrow.acero.ScanNodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.FilterNodeOptions.html">pyarrow.acero.FilterNodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.ProjectNodeOptions.html">pyarrow.acero.ProjectNodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.AggregateNodeOptions.html">pyarrow.acero.AggregateNodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.OrderByNodeOptions.html">pyarrow.acero.OrderByNodeOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.acero.HashJoinNodeOptions.html">pyarrow.acero.HashJoinNodeOptions</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/substrait.html">Substrait</a><input class="toctree-checkbox" id="toctree-checkbox-9" name="toctree-checkbox-9" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-9"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.substrait.run_query.html">pyarrow.substrait.run_query</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.substrait.BoundExpressions.html">pyarrow.substrait.BoundExpressions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.substrait.deserialize_expressions.html">pyarrow.substrait.deserialize_expressions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.substrait.serialize_expressions.html">pyarrow.substrait.serialize_expressions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.substrait.get_supported_functions.html">pyarrow.substrait.get_supported_functions</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/files.html">Streams and File Access</a><input class="toctree-checkbox" id="toctree-checkbox-10" name="toctree-checkbox-10" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-10"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.input_stream.html">pyarrow.input_stream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.output_stream.html">pyarrow.output_stream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.memory_map.html">pyarrow.memory_map</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.create_memory_map.html">pyarrow.create_memory_map</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.NativeFile.html">pyarrow.NativeFile</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.OSFile.html">pyarrow.OSFile</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.PythonFile.html">pyarrow.PythonFile</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.BufferReader.html">pyarrow.BufferReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.BufferOutputStream.html">pyarrow.BufferOutputStream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.FixedSizeBufferWriter.html">pyarrow.FixedSizeBufferWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.MemoryMappedFile.html">pyarrow.MemoryMappedFile</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.CompressedInputStream.html">pyarrow.CompressedInputStream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.CompressedOutputStream.html">pyarrow.CompressedOutputStream</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/ipc.html">Serialization and IPC</a><input class="toctree-checkbox" id="toctree-checkbox-11" name="toctree-checkbox-11" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-11"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.new_file.html">pyarrow.ipc.new_file</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.open_file.html">pyarrow.ipc.open_file</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.new_stream.html">pyarrow.ipc.new_stream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.open_stream.html">pyarrow.ipc.open_stream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.read_message.html">pyarrow.ipc.read_message</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.read_record_batch.html">pyarrow.ipc.read_record_batch</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.get_record_batch_size.html">pyarrow.ipc.get_record_batch_size</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.read_tensor.html">pyarrow.ipc.read_tensor</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.write_tensor.html">pyarrow.ipc.write_tensor</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.get_tensor_size.html">pyarrow.ipc.get_tensor_size</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.IpcReadOptions.html">pyarrow.ipc.IpcReadOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.IpcWriteOptions.html">pyarrow.ipc.IpcWriteOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.Message.html">pyarrow.ipc.Message</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.MessageReader.html">pyarrow.ipc.MessageReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.RecordBatchFileReader.html">pyarrow.ipc.RecordBatchFileReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.RecordBatchFileWriter.html">pyarrow.ipc.RecordBatchFileWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.RecordBatchStreamReader.html">pyarrow.ipc.RecordBatchStreamReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.ipc.RecordBatchStreamWriter.html">pyarrow.ipc.RecordBatchStreamWriter</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/flight.html">Arrow Flight</a><input class="toctree-checkbox" id="toctree-checkbox-12" name="toctree-checkbox-12" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-12"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.Action.html">pyarrow.flight.Action</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.ActionType.html">pyarrow.flight.ActionType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.DescriptorType.html">pyarrow.flight.DescriptorType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightDescriptor.html">pyarrow.flight.FlightDescriptor</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightEndpoint.html">pyarrow.flight.FlightEndpoint</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightInfo.html">pyarrow.flight.FlightInfo</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.Location.html">pyarrow.flight.Location</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.MetadataRecordBatchReader.html">pyarrow.flight.MetadataRecordBatchReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.MetadataRecordBatchWriter.html">pyarrow.flight.MetadataRecordBatchWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.Ticket.html">pyarrow.flight.Ticket</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.Result.html">pyarrow.flight.Result</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.connect.html">pyarrow.flight.connect</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightCallOptions.html">pyarrow.flight.FlightCallOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightClient.html">pyarrow.flight.FlightClient</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightStreamReader.html">pyarrow.flight.FlightStreamReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightStreamWriter.html">pyarrow.flight.FlightStreamWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.ClientMiddlewareFactory.html">pyarrow.flight.ClientMiddlewareFactory</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.ClientMiddleware.html">pyarrow.flight.ClientMiddleware</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightDataStream.html">pyarrow.flight.FlightDataStream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightMetadataWriter.html">pyarrow.flight.FlightMetadataWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightServerBase.html">pyarrow.flight.FlightServerBase</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.GeneratorStream.html">pyarrow.flight.GeneratorStream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.RecordBatchStream.html">pyarrow.flight.RecordBatchStream</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.ServerCallContext.html">pyarrow.flight.ServerCallContext</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.ServerMiddlewareFactory.html">pyarrow.flight.ServerMiddlewareFactory</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.ServerMiddleware.html">pyarrow.flight.ServerMiddleware</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.ClientAuthHandler.html">pyarrow.flight.ClientAuthHandler</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.ServerAuthHandler.html">pyarrow.flight.ServerAuthHandler</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightError.html">pyarrow.flight.FlightError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightCancelledError.html">pyarrow.flight.FlightCancelledError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightInternalError.html">pyarrow.flight.FlightInternalError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightServerError.html">pyarrow.flight.FlightServerError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightTimedOutError.html">pyarrow.flight.FlightTimedOutError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightUnauthenticatedError.html">pyarrow.flight.FlightUnauthenticatedError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightUnauthorizedError.html">pyarrow.flight.FlightUnauthorizedError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightUnavailableError.html">pyarrow.flight.FlightUnavailableError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightWriteSizeExceededError.html">pyarrow.flight.FlightWriteSizeExceededError</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.FlightMethod.html">pyarrow.flight.FlightMethod</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.flight.CallInfo.html">pyarrow.flight.CallInfo</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/formats.html">Tabular File Formats</a><input class="toctree-checkbox" id="toctree-checkbox-13" name="toctree-checkbox-13" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-13"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.ConvertOptions.html">pyarrow.csv.ConvertOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.CSVStreamingReader.html">pyarrow.csv.CSVStreamingReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.CSVWriter.html">pyarrow.csv.CSVWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.ISO8601.html">pyarrow.csv.ISO8601</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.ParseOptions.html">pyarrow.csv.ParseOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.ReadOptions.html">pyarrow.csv.ReadOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.WriteOptions.html">pyarrow.csv.WriteOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.open_csv.html">pyarrow.csv.open_csv</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.read_csv.html">pyarrow.csv.read_csv</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.write_csv.html">pyarrow.csv.write_csv</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.csv.InvalidRow.html">pyarrow.csv.InvalidRow</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.feather.read_feather.html">pyarrow.feather.read_feather</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.feather.read_table.html">pyarrow.feather.read_table</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.feather.write_feather.html">pyarrow.feather.write_feather</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.json.ReadOptions.html">pyarrow.json.ReadOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.json.ParseOptions.html">pyarrow.json.ParseOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.json.read_json.html">pyarrow.json.read_json</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.ParquetDataset.html">pyarrow.parquet.ParquetDataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.ParquetFile.html">pyarrow.parquet.ParquetFile</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.ParquetWriter.html">pyarrow.parquet.ParquetWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.read_table.html">pyarrow.parquet.read_table</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.read_metadata.html">pyarrow.parquet.read_metadata</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.read_pandas.html">pyarrow.parquet.read_pandas</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.read_schema.html">pyarrow.parquet.read_schema</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.write_metadata.html">pyarrow.parquet.write_metadata</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.write_table.html">pyarrow.parquet.write_table</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.write_to_dataset.html">pyarrow.parquet.write_to_dataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.FileMetaData.html">pyarrow.parquet.FileMetaData</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.RowGroupMetaData.html">pyarrow.parquet.RowGroupMetaData</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.SortingColumn.html">pyarrow.parquet.SortingColumn</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.ColumnChunkMetaData.html">pyarrow.parquet.ColumnChunkMetaData</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.Statistics.html">pyarrow.parquet.Statistics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.ParquetSchema.html">pyarrow.parquet.ParquetSchema</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.ColumnSchema.html">pyarrow.parquet.ColumnSchema</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.ParquetLogicalType.html">pyarrow.parquet.ParquetLogicalType</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.encryption.CryptoFactory.html">pyarrow.parquet.encryption.CryptoFactory</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.encryption.KmsClient.html">pyarrow.parquet.encryption.KmsClient</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.encryption.KmsConnectionConfig.html">pyarrow.parquet.encryption.KmsConnectionConfig</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.encryption.EncryptionConfiguration.html">pyarrow.parquet.encryption.EncryptionConfiguration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.parquet.encryption.DecryptionConfiguration.html">pyarrow.parquet.encryption.DecryptionConfiguration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.orc.ORCFile.html">pyarrow.orc.ORCFile</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.orc.ORCWriter.html">pyarrow.orc.ORCWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.orc.read_table.html">pyarrow.orc.read_table</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.orc.write_table.html">pyarrow.orc.write_table</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/filesystems.html">Filesystems</a><input class="toctree-checkbox" id="toctree-checkbox-14" name="toctree-checkbox-14" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-14"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.FileInfo.html">pyarrow.fs.FileInfo</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.FileSelector.html">pyarrow.fs.FileSelector</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.FileSystem.html">pyarrow.fs.FileSystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.LocalFileSystem.html">pyarrow.fs.LocalFileSystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.S3FileSystem.html">pyarrow.fs.S3FileSystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.GcsFileSystem.html">pyarrow.fs.GcsFileSystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.HadoopFileSystem.html">pyarrow.fs.HadoopFileSystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.SubTreeFileSystem.html">pyarrow.fs.SubTreeFileSystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.PyFileSystem.html">pyarrow.fs.PyFileSystem</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.FileSystemHandler.html">pyarrow.fs.FileSystemHandler</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.FSSpecHandler.html">pyarrow.fs.FSSpecHandler</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.copy_files.html">pyarrow.fs.copy_files</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.initialize_s3.html">pyarrow.fs.initialize_s3</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.finalize_s3.html">pyarrow.fs.finalize_s3</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.resolve_s3_region.html">pyarrow.fs.resolve_s3_region</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.fs.S3LogLevel.html">pyarrow.fs.S3LogLevel</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/dataset.html">Dataset</a><input class="toctree-checkbox" id="toctree-checkbox-15" name="toctree-checkbox-15" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-15"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.dataset.html">pyarrow.dataset.dataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.parquet_dataset.html">pyarrow.dataset.parquet_dataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.partitioning.html">pyarrow.dataset.partitioning</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.field.html">pyarrow.dataset.field</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.scalar.html">pyarrow.dataset.scalar</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.write_dataset.html">pyarrow.dataset.write_dataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.FileFormat.html">pyarrow.dataset.FileFormat</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.CsvFileFormat.html">pyarrow.dataset.CsvFileFormat</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.CsvFragmentScanOptions.html">pyarrow.dataset.CsvFragmentScanOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.IpcFileFormat.html">pyarrow.dataset.IpcFileFormat</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.JsonFileFormat.html">pyarrow.dataset.JsonFileFormat</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.ParquetFileFormat.html">pyarrow.dataset.ParquetFileFormat</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.ParquetReadOptions.html">pyarrow.dataset.ParquetReadOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.ParquetFragmentScanOptions.html">pyarrow.dataset.ParquetFragmentScanOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.ParquetFileFragment.html">pyarrow.dataset.ParquetFileFragment</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.OrcFileFormat.html">pyarrow.dataset.OrcFileFormat</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.Partitioning.html">pyarrow.dataset.Partitioning</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.PartitioningFactory.html">pyarrow.dataset.PartitioningFactory</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.DirectoryPartitioning.html">pyarrow.dataset.DirectoryPartitioning</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.HivePartitioning.html">pyarrow.dataset.HivePartitioning</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.FilenamePartitioning.html">pyarrow.dataset.FilenamePartitioning</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.Dataset.html">pyarrow.dataset.Dataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.FileSystemDataset.html">pyarrow.dataset.FileSystemDataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.FileSystemFactoryOptions.html">pyarrow.dataset.FileSystemFactoryOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.FileSystemDatasetFactory.html">pyarrow.dataset.FileSystemDatasetFactory</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.UnionDataset.html">pyarrow.dataset.UnionDataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.Fragment.html">pyarrow.dataset.Fragment</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.FragmentScanOptions.html">pyarrow.dataset.FragmentScanOptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.TaggedRecordBatch.html">pyarrow.dataset.TaggedRecordBatch</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.Scanner.html">pyarrow.dataset.Scanner</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.Expression.html">pyarrow.dataset.Expression</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.InMemoryDataset.html">pyarrow.dataset.InMemoryDataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.WrittenFile.html">pyarrow.dataset.WrittenFile</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.dataset.get_partition_keys.html">pyarrow.dataset.get_partition_keys</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/cuda.html">CUDA Integration</a><input class="toctree-checkbox" id="toctree-checkbox-16" name="toctree-checkbox-16" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-16"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.Context.html">pyarrow.cuda.Context</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.CudaBuffer.html">pyarrow.cuda.CudaBuffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.new_host_buffer.html">pyarrow.cuda.new_host_buffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.HostBuffer.html">pyarrow.cuda.HostBuffer</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.BufferReader.html">pyarrow.cuda.BufferReader</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.BufferWriter.html">pyarrow.cuda.BufferWriter</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.serialize_record_batch.html">pyarrow.cuda.serialize_record_batch</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.read_record_batch.html">pyarrow.cuda.read_record_batch</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.read_message.html">pyarrow.cuda.read_message</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cuda.IpcMemHandle.html">pyarrow.cuda.IpcMemHandle</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="../api/misc.html">Miscellaneous</a><input class="toctree-checkbox" id="toctree-checkbox-17" name="toctree-checkbox-17" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-17"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.cpu_count.html">pyarrow.cpu_count</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.set_cpu_count.html">pyarrow.set_cpu_count</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.io_thread_count.html">pyarrow.io_thread_count</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.set_io_thread_count.html">pyarrow.set_io_thread_count</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.get_include.html">pyarrow.get_include</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.get_libraries.html">pyarrow.get_libraries</a></li>
<li class="toctree-l3"><a class="reference internal" href="../generated/pyarrow.get_library_dirs.html">pyarrow.get_library_dirs</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../getting_involved.html">Getting Involved</a></li>
<li class="toctree-l1"><a class="reference internal" href="../benchmarks.html">Benchmarks</a></li>
<li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/cookbook/py/">Python cookbook</a></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Python</a></li>
<li class="breadcrumb-item"><a href="../integration.html" class="nav-link">PyArrow Integrations</a></li>
<li class="breadcrumb-item active" aria-current="page">Integrating...</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="integrating-pyarrow-with-java">
<h1>Integrating PyArrow with Java<a class="headerlink" href="#integrating-pyarrow-with-java" title="Permalink to this heading">#</a></h1>
<p>Arrow supports exchanging data within the same process through the
<a class="reference internal" href="../../format/CDataInterface.html#c-data-interface"><span class="std std-ref">The Arrow C data interface</span></a>.</p>
<p>This can be used to exchange data between Python and Java functions and
methods so that the two languages can interact without any cost of
marshaling and unmarshaling data.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The article takes for granted that you have a <code class="docutils literal notranslate"><span class="pre">Python</span></code> environment
with <code class="docutils literal notranslate"><span class="pre">pyarrow</span></code> correctly installed and a <code class="docutils literal notranslate"><span class="pre">Java</span></code> environment with
<code class="docutils literal notranslate"><span class="pre">arrow</span></code> library correctly installed.
The <code class="docutils literal notranslate"><span class="pre">Arrow</span> <span class="pre">Java</span></code> version must have been compiled with <code class="docutils literal notranslate"><span class="pre">mvn</span> <span class="pre">-Parrow-c-data</span></code> to
ensure CData exchange support is enabled.
See <a class="reference external" href="https://arrow.apache.org/docs/python/install.html">Python Install Instructions</a>
and <a class="reference external" href="https://arrow.apache.org/docs/java/">Java Documentation</a>
for further details.</p>
</div>
<section id="invoking-java-methods-from-python">
<h2>Invoking Java methods from Python<a class="headerlink" href="#invoking-java-methods-from-python" title="Permalink to this heading">#</a></h2>
<p>Suppose we have a simple Java class providing a number as its output:</p>
<div class="highlight-Java notranslate"><div class="highlight"><pre><span></span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Simple</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">getNumber</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">4</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>We would save such class in the <code class="docutils literal notranslate"><span class="pre">Simple.java</span></code> file and proceed with
compiling it to <code class="docutils literal notranslate"><span class="pre">Simple.class</span></code> using <code class="docutils literal notranslate"><span class="pre">javac</span> <span class="pre">Simple.java</span></code>.</p>
<p>Once the <code class="docutils literal notranslate"><span class="pre">Simple.class</span></code> file is created we can use the class
from Python using the
<a class="reference external" href="https://jpype.readthedocs.io/">JPype</a> library which
enables a Java runtime within the Python interpreter.</p>
<p><code class="docutils literal notranslate"><span class="pre">jpype1</span></code> can be installed using <code class="docutils literal notranslate"><span class="pre">pip</span></code> like most Python libraries</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>jpype1
</pre></div>
</div>
<p>The most basic thing we can do with our <code class="docutils literal notranslate"><span class="pre">Simple</span></code> class is to
use the <code class="docutils literal notranslate"><span class="pre">Simple.getNumber</span></code> method from Python and see
if it will return the result.</p>
<p>To do so, we can create a <code class="docutils literal notranslate"><span class="pre">simple.py</span></code> file which uses <code class="docutils literal notranslate"><span class="pre">jpype</span></code> to
import the <code class="docutils literal notranslate"><span class="pre">Simple</span></code> class from <code class="docutils literal notranslate"><span class="pre">Simple.class</span></code> file and invoke
the <code class="docutils literal notranslate"><span class="pre">Simple.getNumber</span></code> method:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">jpype</span>
<span class="kn">from</span> <span class="nn">jpype.types</span> <span class="kn">import</span> <span class="o">*</span>
<span class="n">jpype</span><span class="o">.</span><span class="n">startJVM</span><span class="p">(</span><span class="n">classpath</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;./&quot;</span><span class="p">])</span>
<span class="n">Simple</span> <span class="o">=</span> <span class="n">JClass</span><span class="p">(</span><span class="s1">&#39;Simple&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">Simple</span><span class="o">.</span><span class="n">getNumber</span><span class="p">())</span>
</pre></div>
</div>
<p>Running the <code class="docutils literal notranslate"><span class="pre">simple.py</span></code> file will show how our Python code is able
to access the <code class="docutils literal notranslate"><span class="pre">Java</span></code> method and print the expected result:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>python<span class="w"> </span>simple.py
<span class="go">4</span>
</pre></div>
</div>
</section>
<section id="java-to-python-using-pyarrow-jvm">
<h2>Java to Python using pyarrow.jvm<a class="headerlink" href="#java-to-python-using-pyarrow-jvm" title="Permalink to this heading">#</a></h2>
<p>PyArrow provides a <code class="docutils literal notranslate"><span class="pre">pyarrow.jvm</span></code> module that makes easier to
interact with Java classes and convert the Java objects to actual
Python objects.</p>
<p>To showcase <code class="docutils literal notranslate"><span class="pre">pyarrow.jvm</span></code> we could create a more complex
class, named <code class="docutils literal notranslate"><span class="pre">FillTen.java</span></code></p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.BigIntVector</span><span class="p">;</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">FillTen</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">RootAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">BigIntVector</span><span class="w"> </span><span class="nf">createArray</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">BigIntVector</span><span class="w"> </span><span class="n">intVector</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">BigIntVector</span><span class="p">(</span><span class="s">&quot;ints&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVector</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVector</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">FillTen</span><span class="p">.</span><span class="na">fillVector</span><span class="p">(</span><span class="n">intVector</span><span class="p">);</span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">intVector</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">fillVector</span><span class="p">(</span><span class="n">BigIntVector</span><span class="w"> </span><span class="n">iv</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>This class provides a public <code class="docutils literal notranslate"><span class="pre">createArray</span></code> method that anyone can invoke
to get back an array containing numbers from 1 to 10.</p>
<p>Given that this class now has a dependency on a bunch of packages,
compiling it with <code class="docutils literal notranslate"><span class="pre">javac</span></code> is not enough anymore. We need to create
a dedicated <code class="docutils literal notranslate"><span class="pre">pom.xml</span></code> file where we can collect the dependencies:</p>
<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;project&gt;</span>
<span class="w"> </span><span class="nt">&lt;modelVersion&gt;</span>4.0.0<span class="nt">&lt;/modelVersion&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.arrow.py2java<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>FillTen<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;version&gt;</span>1<span class="nt">&lt;/version&gt;</span>
<span class="w"> </span><span class="nt">&lt;properties&gt;</span>
<span class="w"> </span><span class="nt">&lt;maven.compiler.source&gt;</span>8<span class="nt">&lt;/maven.compiler.source&gt;</span>
<span class="w"> </span><span class="nt">&lt;maven.compiler.target&gt;</span>8<span class="nt">&lt;/maven.compiler.target&gt;</span>
<span class="w"> </span><span class="nt">&lt;/properties&gt;</span>
<span class="w"> </span><span class="nt">&lt;dependencies&gt;</span>
<span class="w"> </span><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.arrow<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>arrow-memory<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;version&gt;</span>8.0.0<span class="nt">&lt;/version&gt;</span>
<span class="w"> </span><span class="nt">&lt;type&gt;</span>pom<span class="nt">&lt;/type&gt;</span>
<span class="w"> </span><span class="nt">&lt;/dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.arrow<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>arrow-memory-netty<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;version&gt;</span>8.0.0<span class="nt">&lt;/version&gt;</span>
<span class="w"> </span><span class="nt">&lt;type&gt;</span>jar<span class="nt">&lt;/type&gt;</span>
<span class="w"> </span><span class="nt">&lt;/dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.arrow<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>arrow-vector<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;version&gt;</span>8.0.0<span class="nt">&lt;/version&gt;</span>
<span class="w"> </span><span class="nt">&lt;type&gt;</span>pom<span class="nt">&lt;/type&gt;</span>
<span class="w"> </span><span class="nt">&lt;/dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;groupId&gt;</span>org.apache.arrow<span class="nt">&lt;/groupId&gt;</span>
<span class="w"> </span><span class="nt">&lt;artifactId&gt;</span>arrow-c-data<span class="nt">&lt;/artifactId&gt;</span>
<span class="w"> </span><span class="nt">&lt;version&gt;</span>8.0.0<span class="nt">&lt;/version&gt;</span>
<span class="w"> </span><span class="nt">&lt;type&gt;</span>jar<span class="nt">&lt;/type&gt;</span>
<span class="w"> </span><span class="nt">&lt;/dependency&gt;</span>
<span class="w"> </span><span class="nt">&lt;/dependencies&gt;</span>
<span class="nt">&lt;/project&gt;</span>
</pre></div>
</div>
<p>Once the <code class="docutils literal notranslate"><span class="pre">FillTen.java</span></code> file with the class is created
as <code class="docutils literal notranslate"><span class="pre">src/main/java/FillTen.java</span></code> we can use <code class="docutils literal notranslate"><span class="pre">maven</span></code> to
compile the project with <code class="docutils literal notranslate"><span class="pre">mvn</span> <span class="pre">package</span></code> and get it
available in the <code class="docutils literal notranslate"><span class="pre">target</span></code> directory.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>mvn<span class="w"> </span>package
<span class="go">[INFO] Scanning for projects...</span>
<span class="go">[INFO]</span>
<span class="go">[INFO] ------------------&lt; org.apache.arrow.py2java:FillTen &gt;------------------</span>
<span class="go">[INFO] Building FillTen 1</span>
<span class="go">[INFO] --------------------------------[ jar ]---------------------------------</span>
<span class="go">[INFO]</span>
<span class="go">[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ FillTen ---</span>
<span class="go">[INFO] Changes detected - recompiling the module!</span>
<span class="go">[INFO] Compiling 1 source file to /experiments/java2py/target/classes</span>
<span class="go">[INFO]</span>
<span class="go">[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ FillTen ---</span>
<span class="go">[INFO] Building jar: /experiments/java2py/target/FillTen-1.jar</span>
<span class="go">[INFO] ------------------------------------------------------------------------</span>
<span class="go">[INFO] BUILD SUCCESS</span>
<span class="go">[INFO] ------------------------------------------------------------------------</span>
</pre></div>
</div>
<p>Now that we have the package built, we can make it available to Python.
To do so, we need to make sure that not only the package itself is available,
but that also its dependencies are.</p>
<p>We can use <code class="docutils literal notranslate"><span class="pre">maven</span></code> to collect all dependencies and make them available in a single place
(the <code class="docutils literal notranslate"><span class="pre">dependencies</span></code> directory) so that we can more easily load them from Python:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>mvn<span class="w"> </span>org.apache.maven.plugins:maven-dependency-plugin:2.7:copy-dependencies<span class="w"> </span>-DoutputDirectory<span class="o">=</span>dependencies
<span class="go">[INFO] Scanning for projects...</span>
<span class="go">[INFO]</span>
<span class="go">[INFO] ------------------&lt; org.apache.arrow.py2java:FillTen &gt;------------------</span>
<span class="go">[INFO] Building FillTen 1</span>
<span class="go">[INFO] --------------------------------[ jar ]---------------------------------</span>
<span class="go">[INFO]</span>
<span class="go">[INFO] --- maven-dependency-plugin:2.7:copy-dependencies (default-cli) @ FillTen ---</span>
<span class="go">[INFO] Copying jsr305-3.0.2.jar to /experiments/java2py/dependencies/jsr305-3.0.2.jar</span>
<span class="go">[INFO] Copying netty-common-4.1.72.Final.jar to /experiments/java2py/dependencies/netty-common-4.1.72.Final.jar</span>
<span class="go">[INFO] Copying arrow-memory-core-8.0.0-SNAPSHOT.jar to /experiments/java2py/dependencies/arrow-memory-core-8.0.0-SNAPSHOT.jar</span>
<span class="go">[INFO] Copying arrow-vector-8.0.0-SNAPSHOT.jar to /experiments/java2py/dependencies/arrow-vector-8.0.0-SNAPSHOT.jar</span>
<span class="go">[INFO] Copying arrow-c-data-8.0.0-SNAPSHOT.jar to /experiments/java2py/dependencies/arrow-c-data-8.0.0-SNAPSHOT.jar</span>
<span class="go">[INFO] Copying arrow-vector-8.0.0-SNAPSHOT.pom to /experiments/java2py/dependencies/arrow-vector-8.0.0-SNAPSHOT.pom</span>
<span class="go">[INFO] Copying jackson-core-2.11.4.jar to /experiments/java2py/dependencies/jackson-core-2.11.4.jar</span>
<span class="go">[INFO] Copying jackson-annotations-2.11.4.jar to /experiments/java2py/dependencies/jackson-annotations-2.11.4.jar</span>
<span class="go">[INFO] Copying slf4j-api-1.7.25.jar to /experiments/java2py/dependencies/slf4j-api-1.7.25.jar</span>
<span class="go">[INFO] Copying arrow-memory-netty-8.0.0-SNAPSHOT.jar to /experiments/java2py/dependencies/arrow-memory-netty-8.0.0-SNAPSHOT.jar</span>
<span class="go">[INFO] Copying arrow-format-8.0.0-SNAPSHOT.jar to /experiments/java2py/dependencies/arrow-format-8.0.0-SNAPSHOT.jar</span>
<span class="go">[INFO] Copying flatbuffers-java-1.12.0.jar to /experiments/java2py/dependencies/flatbuffers-java-1.12.0.jar</span>
<span class="go">[INFO] Copying arrow-memory-8.0.0-SNAPSHOT.pom to /experiments/java2py/dependencies/arrow-memory-8.0.0-SNAPSHOT.pom</span>
<span class="go">[INFO] Copying netty-buffer-4.1.72.Final.jar to /experiments/java2py/dependencies/netty-buffer-4.1.72.Final.jar</span>
<span class="go">[INFO] Copying jackson-databind-2.11.4.jar to /experiments/java2py/dependencies/jackson-databind-2.11.4.jar</span>
<span class="go">[INFO] Copying commons-codec-1.10.jar to /experiments/java2py/dependencies/commons-codec-1.10.jar</span>
<span class="go">[INFO] ------------------------------------------------------------------------</span>
<span class="go">[INFO] BUILD SUCCESS</span>
<span class="go">[INFO] ------------------------------------------------------------------------</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Instead of manually collecting dependencies, you could also rely on the
<code class="docutils literal notranslate"><span class="pre">maven-assembly-plugin</span></code> to build a single <code class="docutils literal notranslate"><span class="pre">jar</span></code> with all dependencies.</p>
</div>
<p>Once our package and all its dependencies are available,
we can invoke it from <code class="docutils literal notranslate"><span class="pre">fillten_pyarrowjvm.py</span></code> script that will
import the <code class="docutils literal notranslate"><span class="pre">FillTen</span></code> class and print out the result of invoking <code class="docutils literal notranslate"><span class="pre">FillTen.createArray</span></code></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">jpype</span>
<span class="kn">import</span> <span class="nn">jpype.imports</span>
<span class="kn">from</span> <span class="nn">jpype.types</span> <span class="kn">import</span> <span class="o">*</span>
<span class="c1"># Start a JVM making available all dependencies we collected</span>
<span class="c1"># and our class from target/FillTen-1.jar</span>
<span class="n">jpype</span><span class="o">.</span><span class="n">startJVM</span><span class="p">(</span><span class="n">classpath</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;./dependencies/*&quot;</span><span class="p">,</span> <span class="s2">&quot;./target/*&quot;</span><span class="p">])</span>
<span class="n">FillTen</span> <span class="o">=</span> <span class="n">JClass</span><span class="p">(</span><span class="s1">&#39;FillTen&#39;</span><span class="p">)</span>
<span class="n">array</span> <span class="o">=</span> <span class="n">FillTen</span><span class="o">.</span><span class="n">createArray</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">array</span><span class="p">),</span> <span class="n">array</span><span class="p">)</span>
<span class="c1"># Convert the proxied BigIntVector to an actual pyarrow array</span>
<span class="kn">import</span> <span class="nn">pyarrow.jvm</span>
<span class="n">pyarray</span> <span class="o">=</span> <span class="n">pyarrow</span><span class="o">.</span><span class="n">jvm</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">array</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">pyarray</span><span class="p">),</span> <span class="n">pyarray</span><span class="p">)</span>
<span class="k">del</span> <span class="n">pyarray</span>
</pre></div>
</div>
<p>Running the python script will lead to two lines getting printed:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>ARRAY &lt;java class &#39;org.apache.arrow.vector.BigIntVector&#39;&gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ARRAY &lt;class &#39;pyarrow.lib.Int64Array&#39;&gt; [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
]
</pre></div>
</div>
<p>The first line is the raw result of invoking the <code class="docutils literal notranslate"><span class="pre">FillTen.createArray</span></code> method.
The resulting object is a proxy to the actual Java object, so it’s not really a pyarrow
Array, it will lack most of its capabilities and methods.
That’s why we subsequently use <code class="docutils literal notranslate"><span class="pre">pyarrow.jvm.array</span></code> to convert it to an actual
<code class="docutils literal notranslate"><span class="pre">pyarrow</span></code> array. That allows us to treat it like any other <code class="docutils literal notranslate"><span class="pre">pyarrow</span></code> array.
The result is the second line in the output where the array is correctly reported
as being of type <code class="docutils literal notranslate"><span class="pre">pyarrow.lib.Int64Array</span></code> and is printed using the <code class="docutils literal notranslate"><span class="pre">pyarrow</span></code> style.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>At the moment the <code class="docutils literal notranslate"><span class="pre">pyarrow.jvm</span></code> module is fairly limited in capabilities,
nested types like structs are not supported and it only works on a JVM running
within the same process like JPype.</p>
</div>
</section>
<section id="java-to-python-communication-using-the-c-data-interface">
<h2>Java to Python communication using the C Data Interface<a class="headerlink" href="#java-to-python-communication-using-the-c-data-interface" title="Permalink to this heading">#</a></h2>
<p>The C Data Interface is a protocol implemented in Arrow to exchange data within different
environments without the cost of marshaling and copying data.</p>
<p>This allows to expose data coming from Python or Java to functions that are implemented
in the other language.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In the future the <code class="docutils literal notranslate"><span class="pre">pyarrow.jvm</span></code> will be implemented to leverage the C Data
interface, at the moment is instead specifically written for JPype</p>
</div>
<p>To showcase how C Data works, we are going to tweak a bit both our <code class="docutils literal notranslate"><span class="pre">FillTen</span></code> Java
class and our <code class="docutils literal notranslate"><span class="pre">fillten.py</span></code> Python script. Given a PyArrow array, we are going to
expose a function in Java that sets its content to by the numbers from 1 to 10.</p>
<p>Using C Data interface in <code class="docutils literal notranslate"><span class="pre">pyarrow</span></code> at the moment requires installing <code class="docutils literal notranslate"><span class="pre">cffi</span></code>
explicitly, like most Python distributions it can be installed with</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>cffi
</pre></div>
</div>
<p>The first thing we would have to do is to tweak the Python script so that it
sends to Java the exported references to the Array and its Schema according to the
C Data interface:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">jpype</span>
<span class="kn">import</span> <span class="nn">jpype.imports</span>
<span class="kn">from</span> <span class="nn">jpype.types</span> <span class="kn">import</span> <span class="o">*</span>
<span class="c1"># Init the JVM and make FillTen class available to Python.</span>
<span class="n">jpype</span><span class="o">.</span><span class="n">startJVM</span><span class="p">(</span><span class="n">classpath</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;./dependencies/*&quot;</span><span class="p">,</span> <span class="s2">&quot;./target/*&quot;</span><span class="p">])</span>
<span class="n">FillTen</span> <span class="o">=</span> <span class="n">JClass</span><span class="p">(</span><span class="s1">&#39;FillTen&#39;</span><span class="p">)</span>
<span class="c1"># Create a Python array of 10 elements</span>
<span class="kn">import</span> <span class="nn">pyarrow</span> <span class="k">as</span> <span class="nn">pa</span>
<span class="n">array</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="mi">10</span><span class="p">)</span>
<span class="kn">from</span> <span class="nn">pyarrow.cffi</span> <span class="kn">import</span> <span class="n">ffi</span> <span class="k">as</span> <span class="n">arrow_c</span>
<span class="c1"># Export the Python array through C Data</span>
<span class="n">c_array</span> <span class="o">=</span> <span class="n">arrow_c</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s2">&quot;struct ArrowArray*&quot;</span><span class="p">)</span>
<span class="n">c_array_ptr</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">arrow_c</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="s2">&quot;uintptr_t&quot;</span><span class="p">,</span> <span class="n">c_array</span><span class="p">))</span>
<span class="n">array</span><span class="o">.</span><span class="n">_export_to_c</span><span class="p">(</span><span class="n">c_array_ptr</span><span class="p">)</span>
<span class="c1"># Export the Schema of the Array through C Data</span>
<span class="n">c_schema</span> <span class="o">=</span> <span class="n">arrow_c</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s2">&quot;struct ArrowSchema*&quot;</span><span class="p">)</span>
<span class="n">c_schema_ptr</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">arrow_c</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="s2">&quot;uintptr_t&quot;</span><span class="p">,</span> <span class="n">c_schema</span><span class="p">))</span>
<span class="n">array</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">_export_to_c</span><span class="p">(</span><span class="n">c_schema_ptr</span><span class="p">)</span>
<span class="c1"># Send Array and its Schema to the Java function</span>
<span class="c1"># that will populate the array with numbers from 1 to 10</span>
<span class="n">FillTen</span><span class="o">.</span><span class="n">fillCArray</span><span class="p">(</span><span class="n">c_array_ptr</span><span class="p">,</span> <span class="n">c_schema_ptr</span><span class="p">)</span>
<span class="c1"># See how the content of our Python array was changed from Java</span>
<span class="c1"># while it remained of the Python type.</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">array</span><span class="p">),</span> <span class="n">array</span><span class="p">)</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Changing content of arrays is not a safe operation, it was done
for the purpose of creating this example, and it mostly works only
because the array hasn’t changed size, type or nulls.</p>
</div>
<p>In the FillTen Java class, we already have the <code class="docutils literal notranslate"><span class="pre">fillVector</span></code>
method, but that method is private and even if we made it public it
would only accept a <code class="docutils literal notranslate"><span class="pre">BigIntVector</span></code> object and not the C Data array
and schema references.</p>
<p>So we have to expand our <code class="docutils literal notranslate"><span class="pre">FillTen</span></code> class adding a <code class="docutils literal notranslate"><span class="pre">fillCArray</span></code>
method that is able to perform the work of <code class="docutils literal notranslate"><span class="pre">fillVector</span></code> but
on the C Data exchanged entities instead of the <code class="docutils literal notranslate"><span class="pre">BigIntVector</span></code> one:</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.c.ArrowArray</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.c.ArrowSchema</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.c.Data</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.FieldVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.BigIntVector</span><span class="p">;</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">FillTen</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">RootAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">fillCArray</span><span class="p">(</span><span class="kt">long</span><span class="w"> </span><span class="n">c_array_ptr</span><span class="p">,</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">c_schema_ptr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ArrowArray</span><span class="w"> </span><span class="n">arrow_array</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ArrowArray</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">c_array_ptr</span><span class="p">);</span>
<span class="w"> </span><span class="n">ArrowSchema</span><span class="w"> </span><span class="n">arrow_schema</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ArrowSchema</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">c_schema_ptr</span><span class="p">);</span>
<span class="w"> </span><span class="n">FieldVector</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Data</span><span class="p">.</span><span class="na">importVector</span><span class="p">(</span><span class="n">allocator</span><span class="p">,</span><span class="w"> </span><span class="n">arrow_array</span><span class="p">,</span><span class="w"> </span><span class="n">arrow_schema</span><span class="p">,</span><span class="w"> </span><span class="kc">null</span><span class="p">);</span>
<span class="w"> </span><span class="n">FillTen</span><span class="p">.</span><span class="na">fillVector</span><span class="p">((</span><span class="n">BigIntVector</span><span class="p">)</span><span class="n">v</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">fillVector</span><span class="p">(</span><span class="n">BigIntVector</span><span class="w"> </span><span class="n">iv</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="p">);</span>
<span class="w"> </span><span class="n">iv</span><span class="p">.</span><span class="na">setSafe</span><span class="p">(</span><span class="mi">9</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>The goal of the <code class="docutils literal notranslate"><span class="pre">fillCArray</span></code> method is to get the Array and Schema received in
C Data exchange format and turn them back to an object of type <code class="docutils literal notranslate"><span class="pre">FieldVector</span></code>
so that Arrow Java knows how to deal with it.</p>
<p>If we run again <code class="docutils literal notranslate"><span class="pre">mvn</span> <span class="pre">package</span></code>, update the maven dependencies
and then our Python script, we should be able to see how the
values printed by the Python script have been properly changed by the Java code:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>mvn<span class="w"> </span>package
<span class="gp">$ </span>mvn<span class="w"> </span>org.apache.maven.plugins:maven-dependency-plugin:2.7:copy-dependencies<span class="w"> </span>-DoutputDirectory<span class="o">=</span>dependencies
<span class="gp">$ </span>python<span class="w"> </span>fillten.py
<span class="go">ARRAY &lt;class &#39;pyarrow.lib.Int64Array&#39;&gt; [</span>
<span class="go"> 1,</span>
<span class="go"> 2,</span>
<span class="go"> 3,</span>
<span class="go"> 4,</span>
<span class="go"> 5,</span>
<span class="go"> 6,</span>
<span class="go"> 7,</span>
<span class="go"> 8,</span>
<span class="go"> 9,</span>
<span class="go"> 10</span>
<span class="go">]</span>
</pre></div>
</div>
<p>We can also use the C Stream Interface to exchange
<a class="reference internal" href="../generated/pyarrow.RecordBatchReader.html#pyarrow.RecordBatchReader" title="pyarrow.RecordBatchReader"><code class="xref py py-class docutils literal notranslate"><span class="pre">pyarrow.RecordBatchReader</span></code></a> between Java and Python. We’ll
use this Java class as a demo, which lets you read an Arrow IPC file
via Java’s implementation, or write data to a JSON file:</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">java.io.File</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.nio.file.Files</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.nio.file.Paths</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.c.ArrowArrayStream</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.c.Data</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.ipc.ArrowFileReader</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.ipc.ArrowReader</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.ipc.JsonFileWriter</span><span class="p">;</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">PythonInteropDemo</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">AutoCloseable</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="p">;</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">PythonInteropDemo</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">exportStream</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">cStreamPointer</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">(</span><span class="kd">final</span><span class="w"> </span><span class="n">ArrowArrayStream</span><span class="w"> </span><span class="n">stream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ArrowArrayStream</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">cStreamPointer</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">ArrowFileReader</span><span class="w"> </span><span class="n">reader</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrowFileReader</span><span class="p">(</span><span class="n">Files</span><span class="p">.</span><span class="na">newByteChannel</span><span class="p">(</span><span class="n">Paths</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="n">path</span><span class="p">)),</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">Data</span><span class="p">.</span><span class="na">exportArrayStream</span><span class="p">(</span><span class="n">allocator</span><span class="p">,</span><span class="w"> </span><span class="n">reader</span><span class="p">,</span><span class="w"> </span><span class="n">stream</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">importStream</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">path</span><span class="p">,</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">cStreamPointer</span><span class="p">)</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">(</span><span class="kd">final</span><span class="w"> </span><span class="n">ArrowArrayStream</span><span class="w"> </span><span class="n">stream</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ArrowArrayStream</span><span class="p">.</span><span class="na">wrap</span><span class="p">(</span><span class="n">cStreamPointer</span><span class="p">);</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">ArrowReader</span><span class="w"> </span><span class="n">input</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Data</span><span class="p">.</span><span class="na">importArrayStream</span><span class="p">(</span><span class="n">allocator</span><span class="p">,</span><span class="w"> </span><span class="n">stream</span><span class="p">);</span>
<span class="w"> </span><span class="n">JsonFileWriter</span><span class="w"> </span><span class="n">writer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">JsonFileWriter</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">File</span><span class="p">(</span><span class="n">path</span><span class="p">)))</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">writer</span><span class="p">.</span><span class="na">start</span><span class="p">(</span><span class="n">input</span><span class="p">.</span><span class="na">getVectorSchemaRoot</span><span class="p">().</span><span class="na">getSchema</span><span class="p">(),</span><span class="w"> </span><span class="n">input</span><span class="p">);</span>
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">input</span><span class="p">.</span><span class="na">loadNextBatch</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">writer</span><span class="p">.</span><span class="na">write</span><span class="p">(</span><span class="n">input</span><span class="p">.</span><span class="na">getVectorSchemaRoot</span><span class="p">());</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="nd">@Override</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">close</span><span class="p">()</span><span class="w"> </span><span class="kd">throws</span><span class="w"> </span><span class="n">Exception</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">allocator</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>On the Python side, we’ll use JPype as before, except this time we’ll
send RecordBatchReaders back and forth:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">tempfile</span>
<span class="kn">import</span> <span class="nn">jpype</span>
<span class="kn">import</span> <span class="nn">jpype.imports</span>
<span class="kn">from</span> <span class="nn">jpype.types</span> <span class="kn">import</span> <span class="o">*</span>
<span class="c1"># Init the JVM and make demo class available to Python.</span>
<span class="n">jpype</span><span class="o">.</span><span class="n">startJVM</span><span class="p">(</span><span class="n">classpath</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;./dependencies/*&quot;</span><span class="p">,</span> <span class="s2">&quot;./target/*&quot;</span><span class="p">])</span>
<span class="n">PythonInteropDemo</span> <span class="o">=</span> <span class="n">JClass</span><span class="p">(</span><span class="s2">&quot;PythonInteropDemo&quot;</span><span class="p">)</span>
<span class="n">demo</span> <span class="o">=</span> <span class="n">PythonInteropDemo</span><span class="p">()</span>
<span class="c1"># Create a Python record batch reader</span>
<span class="kn">import</span> <span class="nn">pyarrow</span> <span class="k">as</span> <span class="nn">pa</span>
<span class="n">schema</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">schema</span><span class="p">([</span>
<span class="p">(</span><span class="s2">&quot;ints&quot;</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">int64</span><span class="p">()),</span>
<span class="p">(</span><span class="s2">&quot;strs&quot;</span><span class="p">,</span> <span class="n">pa</span><span class="o">.</span><span class="n">string</span><span class="p">())</span>
<span class="p">])</span>
<span class="n">batches</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">pa</span><span class="o">.</span><span class="n">record_batch</span><span class="p">([</span>
<span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">8</span><span class="p">],</span>
<span class="p">[</span><span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="s2">&quot;b&quot;</span><span class="p">,</span> <span class="s2">&quot;c&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">],</span>
<span class="p">],</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">),</span>
<span class="n">pa</span><span class="o">.</span><span class="n">record_batch</span><span class="p">([</span>
<span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="kc">None</span><span class="p">],</span>
<span class="p">[</span><span class="s2">&quot;e&quot;</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="s2">&quot;h&quot;</span><span class="p">],</span>
<span class="p">],</span> <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">),</span>
<span class="p">]</span>
<span class="n">reader</span> <span class="o">=</span> <span class="n">pa</span><span class="o">.</span><span class="n">RecordBatchReader</span><span class="o">.</span><span class="n">from_batches</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">batches</span><span class="p">)</span>
<span class="kn">from</span> <span class="nn">pyarrow.cffi</span> <span class="kn">import</span> <span class="n">ffi</span> <span class="k">as</span> <span class="n">arrow_c</span>
<span class="c1"># Export the Python reader through C Data</span>
<span class="n">c_stream</span> <span class="o">=</span> <span class="n">arrow_c</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s2">&quot;struct ArrowArrayStream*&quot;</span><span class="p">)</span>
<span class="n">c_stream_ptr</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">arrow_c</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="s2">&quot;uintptr_t&quot;</span><span class="p">,</span> <span class="n">c_stream</span><span class="p">))</span>
<span class="n">reader</span><span class="o">.</span><span class="n">_export_to_c</span><span class="p">(</span><span class="n">c_stream_ptr</span><span class="p">)</span>
<span class="c1"># Send reader to the Java function that writes a JSON file</span>
<span class="k">with</span> <span class="n">tempfile</span><span class="o">.</span><span class="n">NamedTemporaryFile</span><span class="p">()</span> <span class="k">as</span> <span class="n">temp</span><span class="p">:</span>
<span class="n">demo</span><span class="o">.</span><span class="n">importStream</span><span class="p">(</span><span class="n">temp</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">c_stream_ptr</span><span class="p">)</span>
<span class="c1"># Read the JSON file back</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">temp</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="k">as</span> <span class="n">source</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;JSON file written by Java:&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">source</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
<span class="c1"># Write an Arrow IPC file for Java to read</span>
<span class="k">with</span> <span class="n">tempfile</span><span class="o">.</span><span class="n">NamedTemporaryFile</span><span class="p">()</span> <span class="k">as</span> <span class="n">temp</span><span class="p">:</span>
<span class="k">with</span> <span class="n">pa</span><span class="o">.</span><span class="n">ipc</span><span class="o">.</span><span class="n">new_file</span><span class="p">(</span><span class="n">temp</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">schema</span><span class="p">)</span> <span class="k">as</span> <span class="n">sink</span><span class="p">:</span>
<span class="k">for</span> <span class="n">batch</span> <span class="ow">in</span> <span class="n">batches</span><span class="p">:</span>
<span class="n">sink</span><span class="o">.</span><span class="n">write_batch</span><span class="p">(</span><span class="n">batch</span><span class="p">)</span>
<span class="n">demo</span><span class="o">.</span><span class="n">exportStream</span><span class="p">(</span><span class="n">temp</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">c_stream_ptr</span><span class="p">)</span>
<span class="k">with</span> <span class="n">pa</span><span class="o">.</span><span class="n">RecordBatchReader</span><span class="o">.</span><span class="n">_import_from_c</span><span class="p">(</span><span class="n">c_stream_ptr</span><span class="p">)</span> <span class="k">as</span> <span class="n">source</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;IPC file read by Java:&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">source</span><span class="o">.</span><span class="n">read_all</span><span class="p">())</span>
</pre></div>
</div>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>mvn<span class="w"> </span>package
<span class="gp">$ </span>mvn<span class="w"> </span>org.apache.maven.plugins:maven-dependency-plugin:2.7:copy-dependencies<span class="w"> </span>-DoutputDirectory<span class="o">=</span>dependencies
<span class="gp">$ </span>python<span class="w"> </span>demo.py
<span class="go">JSON file written by Java:</span>
<span class="go">{&quot;schema&quot;:{&quot;fields&quot;:[{&quot;name&quot;:&quot;ints&quot;,&quot;nullable&quot;:true,&quot;type&quot;:{&quot;name&quot;:&quot;int&quot;,&quot;bitWidth&quot;:64,&quot;isSigned&quot;:true},&quot;children&quot;:[]},{&quot;name&quot;:&quot;strs&quot;,&quot;nullable&quot;:true,&quot;type&quot;:{&quot;name&quot;:&quot;utf8&quot;},&quot;children&quot;:[]}]},&quot;batches&quot;:[{&quot;count&quot;:4,&quot;columns&quot;:[{&quot;name&quot;:&quot;ints&quot;,&quot;count&quot;:4,&quot;VALIDITY&quot;:[1,1,1,1],&quot;DATA&quot;:[&quot;0&quot;,&quot;2&quot;,&quot;4&quot;,&quot;8&quot;]},{&quot;name&quot;:&quot;strs&quot;,&quot;count&quot;:4,&quot;VALIDITY&quot;:[1,1,1,0],&quot;OFFSET&quot;:[0,1,2,3,3],&quot;DATA&quot;:[&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;&quot;]}]},{&quot;count&quot;:4,&quot;columns&quot;:[{&quot;name&quot;:&quot;ints&quot;,&quot;count&quot;:4,&quot;VALIDITY&quot;:[0,1,1,0],&quot;DATA&quot;:[&quot;0&quot;,&quot;32&quot;,&quot;64&quot;,&quot;0&quot;]},{&quot;name&quot;:&quot;strs&quot;,&quot;count&quot;:4,&quot;VALIDITY&quot;:[1,0,0,1],&quot;OFFSET&quot;:[0,1,1,1,2],&quot;DATA&quot;:[&quot;e&quot;,&quot;&quot;,&quot;&quot;,&quot;h&quot;]}]}]}</span>
<span class="go">IPC file read by Java:</span>
<span class="go">pyarrow.Table</span>
<span class="go">ints: int64</span>
<span class="go">strs: string</span>
<span class="go">----</span>
<span class="go">ints: [[0,2,4,8],[null,32,64,null]]</span>
<span class="go">strs: [[&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,null],[&quot;e&quot;,null,null,&quot;h&quot;]]</span>
</pre></div>
</div>
</section>
</section>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
<a class="left-prev"
href="python_r.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
<p class="prev-next-title">Integrating PyArrow with R</p>
</div>
</a>
<a class="right-next"
href="extending.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">Using pyarrow from C++ and Cython Code</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
</div>
</footer>
</div>
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#invoking-java-methods-from-python">Invoking Java methods from Python</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#java-to-python-using-pyarrow-jvm">Java to Python using pyarrow.jvm</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#java-to-python-communication-using-the-c-data-interface">Java to Python communication using the C Data Interface</a></li>
</ul>
</nav></div>
<div class="sidebar-secondary-item">
<div class="tocsection editthispage">
<a href="https://github.com/apache/arrow/edit/main/docs/source/python/integration/python_java.rst">
<i class="fa-solid fa-pencil"></i>
Edit on GitHub
</a>
</div>
</div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2016-2024 Apache Software Foundation.
Apache Arrow, Arrow, Apache, the Apache feather logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.2.0.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
</p></div>
</div>
</div>
</footer>
</body>
</html>