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

  • 相关阅读:
    hibernate映射-单向多对一映射
    CSS
    HTML基础
    复习
    元类,单例
    数据类型,约束,存储引擎
    数据库概念,安装,基本操作
    IO模型
    异步回调,协程
    GIL锁,线程池,同步异步
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12365954.html
Copyright © 2011-2022 走看看