Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
datafusion 0.1.4 - Docs.rs
[go: Go Back, main page]

datafusion 0.1.4

DataFusion is a datasource-agnostic distributed query processing framework for Rust inspired by Apache Spark
Documentation
#[macro_use]
extern crate criterion;

use criterion::Criterion;

extern crate datafusion;
use datafusion::rel::*;
use datafusion::exec::*;

extern crate serde_json;

fn dataframe() {

    // create execution context
    let ctx = ExecutionContext::new();

    // define schema for data source (csv file)
    let schema = Schema::new(vec![
        Field::new("city", DataType::String, false),
        Field::new("lat", DataType::Double, false),
        Field::new("lng", DataType::Double, false)]);

    // open a CSV file as a dataframe
    let df1 = ctx.load("test/data/uk_cities.csv", &schema).unwrap();

    // filter on lat > 52.0
    let lat = df1.col("lat").unwrap();
    let value = Expr::Literal(Value::Double(52.0));
    let df2 = df1.filter(lat.gt(&value)).unwrap();

    // apply a projection using a scalar function to create a complex type
    // invoke custom code as a scalar UDF
    let st_point = ctx.udf("ST_Point",vec![
        df2.col("lat").unwrap(),
        df2.col("lng").unwrap()]);

    let df3 = df2.select(vec![st_point]).unwrap();

    // write the results to a file
    df3.write("_northern_cities.csv").unwrap();

}

fn criterion_benchmark(c: &mut Criterion) {
    c.bench_function("dataframe", |b| b.iter(|| dataframe()));
}

criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);