#bigtable #datafusion #arrow #apache-arrow #data-source #sql

datafusion-bigtable

Apache Arrow Datafusion 的 Bigtable 数据源

1 个不稳定版本

0.1.0 2022年3月12日

#7#bigtable

Apache-2.0 许可

40KB
765

Datafusion-Bigtable

Apache Arrow Datafusion 的 Bigtable 数据源

在 Bigtable 上运行 SQL

此软件包实现了 Datafusion 的 Bigtable 数据源和 Executor。它基于 gRPC 客户端 tonic 构建。

快速入门

let bigtable_datasource = BigtableDataSource::new(
    "emulator".to_owned(),                               // project
    "dev".to_owned(),                                    // instance
    "weather_balloons".to_owned(),                       // table
    "measurements".to_owned(),                           // column family
    vec!["_row_key".to_owned()],                         // table_partition_cols
    "#".to_owned(),                                      // table_partition_separator
    vec![Field::new("pressure", DataType::Utf8, false)], // qualifiers
    true,                                                // only_read_latest
).await.unwrap();

let mut ctx = ExecutionContext::new();
ctx.register_table("weather_balloons", Arc::new(bigtable_datasource)).unwrap();

ctx.sql("SELECT \"_row_key\", pressure, \"_timestamp\" FROM weather_balloons where \"_row_key\" = 'us-west2#3698#2021-03-05-1200'").await?.collect().await?;

路线图

Bigtable

  • ✅ UTF8 字符串
  • ✅ 64 位大端有符号整数

SQL

  • ✅ 通过 "_row_key" = 选择
  • ✅ 通过 "_row_key" IN 选择
  • ✅ 通过 "_row_key" BETWEEN 选择
  • ✅ 通过复合行键 = 选择
  • ✅ 通过复合行键 IN 选择
  • ✅ 通过复合行键 BETWEEN 选择(仅支持最后一个表分区列)

通用

注意:datafusion-bigtable 为 Datafusion 提供物理 Executor。任何聚合、分组、连接都由 Datafusion 实现。

依赖项

~48–64MB
~1.5M SLoC