zoukankan      html  css  js  c++  java
  • 使用 postgres s3 fdw + cube.js 分析 csv 数据

    昨天有大概提过关于使用postgres s3 fdw 用来分析csv 数据的,今天简单试用下

    环境准备

    • docker-compose 文件
    version: "3"
    services:
      postgres-fdw:
        image: dalongrong/pgspider:pg_cron
        ports: 
        - "5433:5432"
        environment:
          - "POSTGRES_PASSWORD=dalong"
      postgres:
        image: dalongrong/pg-s3-fdw:latest
        environment:
          - POSTGRES_PASSWORD=dalong
        ports:
          - 5432:5432
      minio:
        image: minio/minio
        environment:
          - MINIO_ACCESS_KEY=dalongrong
          - MINIO_SECRET_KEY=dalongrong
        ports:
          - 9000:9000
        command: server /data
    • 启动&&初始化数据
      启动
     
    docker-compose up -d

    minio 导入数据
    csv 文件地址:wget http://examples.citusdata.com/customer_reviews_1998.csv.gz
    注意文件需要解压,同时csv 文件需要添加头,内容为:
    放首行

     
    "customer_id","review_date","review_rating","review_votes","review_helpful_votes","product_id","product_title","product_sales_rank","product_group","product_category","product_subcategory","similar_product_ids


    启用pg s3 fdw 扩展

     
    // 创建扩展
    CREATE EXTENSION multicorn;
    // 创建server
    CREATE SERVER multicorn_es FOREIGN DATA WRAPPER multicorn
    OPTIONS (
      wrapper 's3_fdw.S3ForeignDataWrapper'
    );    
    //  创建外部表
        CREATE FOREIGN TABLE customer_reviews(
        customer_id TEXT,
        review_date DATE,
        review_rating INTEGER,
        review_votes INTEGER,
        review_helpful_votes INTEGER,
        product_id CHAR(10),
        product_title TEXT,
        product_sales_rank BIGINT,
        product_group TEXT,
        product_category TEXT,
        product_subcategory TEXT,
        similar_product_ids CHAR(10)[])
      SERVER multicorn_es
      OPTIONS
          (
              bucket_name 'apps',
              object_name 'customer_reviews.csv',
              access_key 'dalongrong',
              secret_key 'dalongrong',
              endpoint_url 'http://minio:9000'
          );
    // 一个简单的数据加速(提高查询)
    select * into customer_reviews3 from customer_reviews;

    cube.js 项目

    • 创建
    cubejs create s3-app -d postgres
    • 启动
    yarn dev
    • 效果

    • 查询展示demo

    说明

    以上是一个简单的试用,实际上我们可以集成pg_cron 进行简单的调度,实现一些比较灵活的数据处理,当前此扩展对于csv 头的处理以及csv 分割格式
    上没有配置选项,后边可以自己修改下

    参考资料

    https://github.com/smomni/s3_fdw_py
    https://github.com/rongfengliang/pg-s3-fdw-learning
    https://github.com/rongfengliang/pgspider-docker

  • 相关阅读:
    学习笔记datatablexml转换
    立即执行函数
    MySQL基操—1.Linux下安装(CentOS6/7yum、rpm、tar)
    Linux1.11.shell(环境变量配置文件)
    三国HR评估报告
    毕业5年后拉开差距的原因
    职业的选择
    WPF图片的缩放节省内存
    .asmx支持post请求或者get请求调用
    ionic3遇到的刷新页面服务器关闭的问题
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12365954.html
Copyright © 2011-2022 走看看