icebird
v0.3.1
Published
Apache Iceberg client for javascript
Readme
Icebird: JavaScript Iceberg Reader

Icebird is a library for reading Apache Iceberg tables in JavaScript. It is built on top of hyparquet for reading the underlying parquet files.
Usage
To read an Iceberg table:
const { icebergRead } = await import('icebird')
const tableUrl = 'https://s3.amazonaws.com/hyperparam-iceberg/spark/bunnies'
const data = await icebergRead({
tableUrl,
rowStart: 0,
rowEnd: 10,
})To read the Iceberg metadata (schema, etc):
import { icebergMetadata } from 'icebird'
const metadata = await icebergMetadata({ tableUrl })
// subsequent reads will be faster if you provide the metadata:
const data = await icebergRead({
tableUrl,
metadata,
})Demo
Check out a minimal iceberg table viewer demo that shows how to integrate Icebird into a react web application using HighTable to render the table data. You can view any publicly accessible Iceberg table:
- Live Demo: https://hyparam.github.io/demos/icebird/
- Demo Source Code: https://github.com/hyparam/demos/tree/master/icebird
Time Travel
To fetch a previous version of the table, you can specify metadataFileName:
import { icebergRead } from 'icebird'
const data = await icebergRead({
tableUrl,
metadataFileName: 'v1.metadata.json',
})Authentication
You can add authentication to all http requests by passing a requestInit argument that will be passed to fetch:
import { icebergRead } from 'icebird'
const data = await icebergRead({
tableUrl,
requestInit: {
headers: {
Authorization: 'Bearer my_token',
},
}
})Supported Features
Icebird aims to support reading any Iceberg table, but currently only supports a subset of the features. The following features are supported:
| Feature | Supported | | ------- | --------- | | Read Iceberg v1 Tables | ✅ | | Read Iceberg v2 Tables | ✅ | | Read Iceberg v3 Tables | ❌ | | Parquet Storage | ✅ | | Avro Storage | ✅ | | ORC Storage | ❌ | | Puffin Storage | ❌ | | File-based Catalog (version-hint.text) | ✅ | | REST Catalog | ❌ | | Hive Catalog | ❌ | | Glue Catalog | ❌ | | Service-based Catalog | ❌ | | Position Deletes | ✅ | | Equality Deletes | ✅ | | Binary Deletion Vectors | ❌ | | Rename Columns | ✅ | | Efficient Partitioned Read Queries | ❌ | | All Parquet Compression Codecs | ✅ | | All Parquet Types | ✅ | | Variant Types | ❌ | | Geometry Types | ❌ | | Geography Types | ❌ | | Sorting | ❌ | | Encryption | ❌ |
References
- https://iceberg.apache.org/spec/
- https://avro.apache.org/docs/1.12.0/specification/
- https://github.com/hyparam/hyparquet
- https://github.com/apache/iceberg
- https://github.com/apache/iceberg-python
