madlib 集成 hasura graphql-engine 试用

Posted rongfengliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了madlib 集成 hasura graphql-engine 试用相关的知识,希望对你有一定的参考价值。

madlib 可以让我们直接在sql 中进行机器学习,集成了强大的sql 能力,以及分析能力,后边会尝试
集成graphql engine ,让功能更强大

docker 镜像准备

使用了一个别人的写好的,也可以参考官方提供的,就是镜像包有点大

  • docker-compose 文件
 
version: ‘2‘
services:
  db:
    container_name: madlib-postgres
    build:
      context: .
      dockerfile: postgres/Dockerfile
    environment:
      - PG_MODE=primary
      - PG_PRIMARY_USER=postgres
      - PG_PRIMARY_PASSWORD=postgres
      - PG_DATABASE=sample
      - PG_USER=user
      - PG_PASSWORD=user
      - PG_ROOT_PASSWORD=root
      - PG_PRIMARY_PORT=5432
    restart: always
    ports:
      - 5432:5432
?
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
    depends_on:
      - db
  graphql-engine:
    image: hasura/graphql-engine:v1.0.0-alpha30
    ports:
    - "9090:8080"
    depends_on:
    - db
    environment:
    - "POSTGRES_PASSWORD:postgres"
    command: >
      /bin/sh -c "
      graphql-engine --database-url postgres://postgres:[email protected]:5432/sample serve --enable-console;
      "
?
networks:
  default:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 180.16.0.0/16
        gateway: 180.16.0.1 
 
 
  • madlib pg dockerfile
FROM crunchydata/crunchy-postgres:centos7-10.5-2.1.0
?
USER root
?
RUN yum -y update; yum clean all
RUN yum -y install postgresql10-plpython supervisor; yum clean all
?
?
### Get postgres specific add-ons
RUN yum update -y && yum install -y 
                    git 
                    gcc 
                    wget 
                    postgresql10-devel 
                    openssl 
                    m4 
                    vim 
                    flex 
                    bison 
                    graphviz 
                    java 
                    epel-release 
                    python-devel
?
RUN yum install -y python-pip
ENV PATH="$PATH:/usr/pgsql-10/bin"
RUN pip install awscli pygresql paramiko --upgrade
?
RUN mkdir -p /src/madlib
COPY ./data/apache-madlib-1.15.1-bin-Linux.rpm /src/madlib
?
RUN yum install -y /src/madlib/apache-madlib-1.15.1-bin-Linux.rpm --nogpgcheck
?
USER 26
EXPOSE 5432
CMD ["/opt/cpm/bin/start.sh"]
 
 

启动&&初始化环境

  • 启动
docker-compose build &&  docker-compose up -d
  • 初始化
docker-compose exec db bash
/usr/local/madlib/bin/madpack -p postgres -c postgres/root@localhost:5432/sample install
/usr/local/madlib/bin/madpack -p postgres -c postgres/root@localhost:5432/sample install-check
 
  • 访问
    默认账户信息为 postgres root sample
    技术分享图片
  • 添加一个简单的数据函数测试
    创建表
 
CREATE TABLE array_tbl (
    id integer,
    array1 integer[],
    array2 integer[]
);
 
 

添加数据

INSERT INTO "public"."array_tbl"("id","array1","array2")
VALUES
(1,E‘{1,2,3,4,5,6}‘,E‘{6,5,4,3,2,1}‘),
(2,E‘{1,1,0,0,99,8}‘,E‘{0,0,0,-5,2,1}‘);
 
 

使用数组函数:
说明:主要使用了madlib 的数组最大以及最小函数

 
select id,madlib.array_min(array1) min, madlib.array_max(array1) max from array_tbl
 

结果
技术分享图片

graphql 引擎使用

  • 打开地址
http://localhost:9090
 
 

效果
技术分享图片

  • 集成
    为了方便使用计算的结果,我们使用了试图进行扩展 技术分享图片

  • 查询madlib 的结果数据
    技术分享图片

说明

这个只是简单的试用,试用上madlib 的功能还是很强大的,同时对于graphql engine 的扩展,我们有好多种
方法,这个只是一种简单的方式,但同时也无法使用强大的weebhook 等功能了(view 的原因)

参考资料

https://github.com/rongfengliang/docker-madlib

以上是关于madlib 集成 hasura graphql-engine 试用的主要内容,如果未能解决你的问题,请参考以下文章

hasura graphql server 集成gatsby

hasura graphql server 集成gitlab

hasura graphql-engine &&patroni docker-compose 环境运行

hasura graphql 模式拼接demo

为啥我使用 graphql > hasura > postgres 保存日期时出错

比较 GraphQL Hasura 中的两个字段