mirror of
https://github.com/langchain-ai/datafusion.git
synced 2026-07-19 23:35:20 -04:00
e433ca40dbf313b36810d316bd6e23dbe76ba4e6
The installation looks like this now in the default case if the build script errors: ``` * installing *source* package ‘arrow’ ... ** using staged installation *** Found local C++ source *** Building C++ libraries **** cmake **** arrow **** Error building Arrow C++. Re-run with ARROW_R_DEV=true for debug information. ------------------------- NOTE --------------------------- See https://arrow.apache.org/docs/r/articles/install.html for help installing Arrow C++ libraries --------------------------------------------------------- ``` This PR also (1) restores the arrow-without-arrow wrapping (from #9689) and (2) adds an .onAttach message for the arrow-without-arrow case to hopefully alert users earlier that they have an incomplete/useless build. If you do get a without-arrow build, this is what the loading message looks like: ``` > library(arrow) The Arrow C++ library is not available. To retry installation with debug output, run: install_arrow(verbose = TRUE) See https://arrow.apache.org/docs/r/articles/install.html for more guidance and troubleshooting. Attaching package: ‘arrow’ The following object is masked from ‘package:utils’: timestamp ``` It *also* adds an .onAttach message if you have a build with optional features disabled (e.g. S3, lz4, etc.): ``` > library(arrow) See arrow_info() for available features Attaching package: ‘arrow’ The following object is masked from ‘package:utils’: timestamp ``` `arrow_info()` will then (on Linux only) also print a message pointing you to the installation vignette if there are missing features: ``` > arrow_info() Arrow package version: 3.0.0.9000 Capabilities: dataset TRUE parquet TRUE s3 TRUE utf8proc TRUE re2 TRUE snappy TRUE gzip TRUE brotli TRUE zstd TRUE lz4 TRUE lz4_frame TRUE lzo FALSE bz2 TRUE jemalloc TRUE mimalloc FALSE To reinstall with more features enabled, see https://arrow.apache.org/docs/r/articles/install.html ... ``` Certain compression libraries (like lzo) are on a blocklist that excludes them from this extra messaging. The purpose of all of this is to give more hints to users when they have limited builds and give them guidance on how to enhance them, while at the same time not overly broadcasting this (which would promote FUD) and trying to be clear that you don't *always* have to `install_arrow()` after `install.packages()`. Closes #9896 from nealrichardson/nix-install-debug Authored-by: Neal Richardson <neal.p.richardson@gmail.com> Signed-off-by: Neal Richardson <neal.p.richardson@gmail.com>
Apache Arrow
Powering In-Memory Analytics
Apache Arrow is a development platform for in-memory analytics. It contains a set of technologies that enable big data systems to process and move data fast.
Major components of the project include:
- The Arrow Columnar In-Memory Format: a standard and efficient in-memory representation of various datatypes, plain or nested
- The Arrow IPC Format: an efficient serialization of the Arrow format and associated metadata, for communication between processes and heterogeneous environments
- The Arrow Flight RPC protocol: based on the Arrow IPC format, a building block for remote services exchanging Arrow data with application-defined semantics (for example a storage server or a database)
- C++ libraries
- C bindings using GLib
- C# .NET libraries
- Gandiva: an LLVM-based Arrow expression compiler, part of the C++ codebase
- Go libraries
- Java libraries
- JavaScript libraries
- Plasma Object Store: a shared-memory blob store, part of the C++ codebase
- Python libraries
- R libraries
- Ruby libraries
- Rust libraries
Arrow is an Apache Software Foundation project. Learn more at arrow.apache.org.
What's in the Arrow libraries?
The reference Arrow libraries contain many distinct software components:
- Columnar vector and table-like containers (similar to data frames) supporting flat or nested types
- Fast, language agnostic metadata messaging layer (using Google's Flatbuffers library)
- Reference-counted off-heap buffer memory management, for zero-copy memory sharing and handling memory-mapped files
- IO interfaces to local and remote filesystems
- Self-describing binary wire formats (streaming and batch/file-like) for remote procedure calls (RPC) and interprocess communication (IPC)
- Integration tests for verifying binary compatibility between the implementations (e.g. sending data from Java to C++)
- Conversions to and from other in-memory data structures
- Readers and writers for various widely-used file formats (such as Parquet, CSV)
Implementation status
The official Arrow libraries in this repository are in different stages of implementing the Arrow format and related features. See our current feature matrix on git master.
How to Contribute
Please read our latest project contribution guide.
Getting involved
Even if you do not plan to contribute to Apache Arrow itself or Arrow integrations in other projects, we'd be happy to have you involved:
- Join the mailing list: send an email to dev-subscribe@arrow.apache.org. Share your ideas and use cases for the project.
- Follow our activity on JIRA
- Learn the format
- Contribute code to one of the reference implementations
Description
Languages
Rust
99.2%
Shell
0.6%
Python
0.2%