파일 포맷 아니라 in-memory 표준
Apache Arrow 는 Pandas (3.0+), Polars, DuckDB, PyArrow, 그리고 많은 DB 클라이언트 라이브러리들이 내부적으로 쓰는 언어 독립적 columnar 메모리 포맷. Disk 에 archival 로 쓰는 파일 포맷이 아니야 (Arrow IPC 파일 존재하긴 함); 도구 사이 데이터 이동을 싸게 만드는 in-memory 표현이야.
실전에서 왜 중요해?
옛 세상: 메모리의 Pandas DataFrame 은 한 방식으로 byte 배치, Spark DataFrame 은 다른 방식, PostgreSQL row 는 세 번째 방식. 사이 이동마다 serialize-deserialize. Arrow 가 평탄화해: 양쪽이 Arrow 말하면 같은 메모리 buffer 공유 — copy 없음, serialization 없음, 포맷 변환 없음. pl.from_pandas(df), duckdb.sql(...).arrow(), arrow_table.to_pandas(zero_copy_only=True) 가 ms 대신 µs 연산이 돼.
Arrow 직접 만질 때
- Parquet 보다 빨리 로드되는 도구-중립 disk 포맷 원할 때 (단기 scratch 용 Arrow IPC).
- REST/JSON 대신 Arrow Flight 로 네트워크 데이터 ship.
pd.read_parquet가 노출 안 하는 기능 필요해서pyarrow.parquet직접 호출.
대부분 Arrow 직접 import 안 해. Arrow-aware 라이브러리 고르면 stack 의 나머지가 빠르게 느껴진다는 걸 알아챌 뿐.