开源自定义数据中台AllData第一章

这篇具有很好参考价值的文章主要介绍了开源自定义数据中台AllData第一章。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💥🔥 Hey there! I'm AllDataDC.


Developing BigData Platform
Exploring new technologies
Studying Computer Science
Enthusiast in BigData and AI
Full Stack developer and BigData developer
Create a product that is useful to society

联系作者:

https://docs.qq.com/doc/DVFZ1RFhGYkJRSGxN

原型 | 官方文档 | Document | Community

Stargazers over time

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RsXUstB2-1679966837577)(null)]

alldata,Github开源数据中台AllData专栏,github,开源,大数据

alldata,Github开源数据中台AllData专栏,github,开源,大数据

社区版



首页





数据集成





















数据质量









数据标准







元数据管理

















数据资产









数据市场
























BI报表
























流程编排









系统监控



















运维管理
























AllData AI Studio 社区版




AllData Studio 社区版




数据中台建设方法论

确定数据中台的目标和范围: 在开始构建数据中台之前, 需要明确数据中台的目标和范围, 例如数据中台的主要功能, 应用场景, 覆盖范围等

收集数据源: 根据定义的目标和范围, 收集相关的数据源这些数据源可以包括内部和外部的结构化和非结构化数据, 实时数据, 历史数据等

数据预处理: 对收集到的数据进行预处理, 包括数据清洗, 归一化, 去重, 脱敏等操作, 以确保数据的准确性, 一致性和安全性

数据建模和集成: 对预处理的数据进行建模和集成, 包括定义数据模型, 设计数据流程, 数据映射和转换等操作, 以确保数据的结构和语义一致性

数据存储和管理: 将集成的数据存储在数据仓库或数据湖中, 并实现数据的管理, 备份和恢复

数据治理和质量管理: 实现数据质量监控, 数据血缘追溯, 数据安全保障, 合规性检查等数据治理和质量管理功能, 以保证数据的高质量和可信性

数据分析和应用: 基于数据中台, 实现数据分析和应用, 如数据挖掘, 数据可视化, 机器学习等, 以提高数据的价值和应用效果

持续优化和创新: 数据中台的建设是一个持续迭代的过程, 需要不断进行优化和创新, 以适应不断变化的数据需求和业务场景

需要注意的是, 数据中台建设需要依赖于先进的技术和方法, 如云计算, 大数据, 人工智能, 数据湖等

同时, 数据中台建设还需要依赖于跨部门的协同和配合, 以确保数据的一致性和可用性

功能一览

  • 平台基础设置
    • 系统管理
      • 岗位管理: 配置系统用户所属担任职务
      • 部门管理: 配置系统组织机构, 树结构展现支持数据权限
      • 菜单管理: 配置系统菜单, 操作权限, 按钮权限标识等
      • 角色管理: 角色菜单权限分配, 设置角色按机构进行数据范围权限划分
      • 用户管理: 用户是系统操作者, 该功能主要完成系统用户配置
      • 参数管理: 对系统动态配置常用参数
      • 字典管理: 对系统中经常使用的一些较为固定的数据进行维护
    • 系统监控
      • 登录日志: 系统登录日志记录查询
      • 操作日志: 系统正常操作日志记录和查询, 系统异常信息日志记录和查询
    • 任务调度
      • 任务管理: 在线(添加, 修改, 删除)任务调度
      • 日志管理: 任务调度执行结果日志
  • 元数据管理
    • 数据源: 数据源连接信息管理, 可生成数据库文档
    • 元数据: 数据库表的元数据信息管理
    • 数据授权: 设置元数据信息权限划分
    • 变更记录: 元数据信息变更记录信息管理
    • 数据检索: 数据源, 数据表, 元数据等信息查询
    • 数据地图: 元数据的隶属数据表, 数据库的图形展示
    • SQL工作台: 在线执行查询sql
  • 数据标准管理
    • 标准字典: 国标数据维护
    • 对照表: 本地数据中需要对照标准的数据维护
    • 字典对照: 本地数据与国标数据的对照关系
    • 对照统计: 本地数据与国标数据的对照结果统计分析
  • 数据质量管理
    • 规则配置: 数据质量规则配置
    • 问题统计: 数据质量规则统计
    • 质量报告: 数据质量结果统计分析
    • 定时任务: 数据质量定时任务
    • 任务日志: 数据质量定时任务日志
  • 主数据管理
    • 数据模型: 主数据数据模型维护
    • 数据管理: 主数据数据管理
  • 数据集市管理
    • 数据服务: 动态开发api数据服务, 可生成数据服务文档
    • 数据脱敏: api数据服务返回结果动态脱敏
    • 接口日志: api数据服务调用日志
    • 服务集成: 三方数据服务集成管理
    • 服务日志: 三方数据服务集成调用日志
  • 可视化管理
    • 数据集: 基于sql的查询结果维护
    • 图表配置: 动态echarts图表配置, 支持多维表格, 折线, 柱状, 饼图, 雷达, 散点等多种图表
    • 看板配置: 拖拽式添加图表组件, 调整位置, 大小
    • 酷屏配置: 拖拽式添加图表组件, 调整背景图, 颜色, 位置, 大小
  • 流程管理
    • 流程定义: 流程定义管理
    • 流程实例
      • 运行中的流程: 运行中的流程实例管理
      • 我发起的流程: 我发起的流程实例管理
      • 我参与的流程: 我参与的流程实例管理
    • 流程任务
      • 待办任务: 待办任务管理
      • 已办任务: 已办任务管理
    • 业务配置: 配置业务系统与流程的相关属性

项目结构

项目采用按功能分模块的开发方式, 结构如下

  • common 为系统的公共模块, 各种工具类, 公共配置存在该模块

  • system 为系统核心模块也是项目入口模块, 也是最终需要打包部署的模块

  • logging 为系统的日志模块, 其他模块如果需要记录日志需要引入该模块

  • tools 为第三方工具模块, 包含: 图床, 邮件, 云存储, 本地存储, 支付宝

  • generator 为系统的代码生成模块, 代码生成的模板在 system 模块中

详细结构

- common 公共模块
    - annotation 为系统自定义注解
    - aspect 自定义注解的切面
    - base 提供了Entity, DTO基类和mapstruct的通用mapper
    - config 自定义权限实现, redis配置, swagger配置, Rsa配置等
    - exception 项目统一异常的处理
    - utils 系统通用工具类
- system 系统核心模块(系统启动入口)
	- config 配置跨域与静态资源, 与数据权限
	    - thread 线程池相关
	- modules 系统相关模块(登录授权, 系统监控, 定时任务, 运维管理等)
- logging 系统日志模块
- tools 系统第三方工具模块
- generator 系统代码生成模块

主要技术栈

后端技术栈

  • 开发框架: Spring Boot 2.3
  • 微服务框架: Spring Cloud Hoxton.SR9
  • 安全框架: Spring Security + Spring OAuth 2.0
  • 任务调度: Quartz
  • 持久层框架: MyBatis Plus
  • 数据库连接池: Hikaricp
  • 服务注册与发现: Spring Cloud Config
  • 客户端负载均衡: Ribbon
  • 熔断组件: Hystrix
  • 网关组件: Spring Cloud Gateway
  • 消息队列: Rabbitmq
  • 缓存: Redis
  • 日志管理: Logback
  • 运行容器: Undertow
  • 工作流: Flowable 6.5.0

前端技术栈

  • JS框架: Vue, nodejs
  • CSS框架: sass
  • 组件库: ElementUI
  • 打包构建工具: Webpack

部署方式





16gmaster port ip
system-service 8000 16gmaster
data-market-service 8822 16gmaster
service-data-integration 8824 16gmaster
data-metadata-service 8820 16gmaster
data-system-service 8810 16gmaster
service-data-dts 9536 16gmaster
config 8611 16gmaster
16gslave port ip
eureka 8610 16gslave
service-workflow 8814 16gslave
data-metadata-service-console 8821 16gslave
service-data-mapping 8823 16gslave
data-masterdata-service 8828 16gslave
data-quality-service 8826 16gslave
16gdata port ip
data-standard-service 8825 16gdata
data-visual-service 8827 16gdata
email-service 8812 16gdata
file-service 8811 16gdata
quartz-service 8813 16gdata
gateway 9538 16gslave

部署方式

数据库版本为 mysql5.7 及以上版本

1、studio数据库初始化

1.1 source install/16gmaster/studio/studio.sql
1.2 source install/16gmaster/studio/studio-v0.3.6.sql

2、修改 config 配置中心

config 文件夹下的配置文件,修改 redismysqlrabbitmq 的配置信息

3、项目根目录下执行

mvn clean install -DskipTests && mvn clean package -DskipTests

获取安装包build/studio-release-0.3.x.tar.gz

上传服务器解压

4、部署stuido[后端]

单节点启动[All In One]

1、启动eureka on 16gslave

2、启动config on 16gmaster

3、启动gateway on 16gdata

4、启动其他Jar

三节点启动[16gmaster, 16gslave, 16gdata]

  1. 单独启动 eureka on 16gslave

  2. 单独启动config on 16gmaster

  3. 单独启动gateway on 16gdata

  4. 启动16gslave, sh start16gslave.sh

  5. 启动16gdata, sh start16gdata.sh

  6. 启动16gmaster, sh start16gmaster.sh

5、部署studio[前端]:

前端部署

安装依赖

依次安装:
nvm install v10.15.3 && nvm use v10.15.3

npm install -g @vue/cli

npm install script-loader

npm install jsonlint

npm install vue2-jsoneditor

npm install

npm run build:prod [生产]

生产环境启动前端ui项目,需要[配置nginx]

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
worker_connections 1024;
}

http {
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    server {
		listen       80;
		server_name  16gmaster;	
		add_header Access-Control-Allow-Origin *;
		add_header Access-Control-Allow-Headers X-Requested-With;
		add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
		location / {
			root /studio/ui/dist;
			index index.html;
			try_files $uri $uri/ /index.html;
		}
		location /api/ {
			proxy_pass  http://16gdata:9538/;
			proxy_set_header Host $proxy_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
	}
}

测试环境启动前端ui项目

npm run dev [测试]

访问studio页面

curl http://localhost:8013

用户名:admin 密码:123456

Antlr4 SQL POC









1、Antlr4词法解析和语法解析 > 包括词法解析、语法解析、Antlr4的结果的处理

2、Antlr4执行阶段

  1. 分为Lexer和Parser,实际上表示了两个不同的阶段:

  2. 词法分析阶段:对应于Lexer定义的词法规则,解析结果为一个一个的Token;
    解析阶段:根据词法,构造出来一棵解析树或者语法树。

  3. 词法解析和语法解析的调和

  4. 首先,语法解析相对于词法解析,会产生更多的开销,所以,应该尽量将某些可能的处理在词法解析阶段完成,减少语法解析阶段的开销

  5. 合并语言不关心的标记,例如,某些语言(例如js)不区分int、double,只有 number,那么在词法解析阶段,
    就不需要将int和double区分开,统一合并为一个number;

  6. 空格、注释等信息,对于语法解析并无大的帮助,可以在词法分析阶段剔除掉;
    诸如标志符、关键字、字符串和数字这样的常用记号,均应该在词法解析时完成,而不要到语法解析阶段再进行。

  7. 只有 number,没有 int 和 double 等,但是面向静态代码分析,我们可能需要知道确切的类型来帮助分析特定的缺陷;

  8. 虽然注释对代码帮助不大,但是我们有时候也需要解析注释的内容来进行分析,如果无法在语法解析的时候获取,
    那么就需要遍历Token,从而导致静态代码分析开销更大等;

  9. 解析树vs语法树

  10. Antlr4生成的树状结构,称为解析树或者是语法树,如果通过Antlr4解析语言简单使用,可以直接基于Antlr4的结果开发,
    但是如果要进行更加深入的处理,就需要对Antlr4的结果进行更进一步的处理,以更符合我们的使用习惯

  11. Java Parser格式的Java的AST,Clang格式的C/C++的AST, 然后才能更好地在上面进行开发。

Presto POC调研















  1. cd presto && mvn clean install -DskipTests=TRUE
  2. cd presto-server/target/presto-server-0.280-SNAPSHOT/
  3. tar -zxvf presto-server-0.280-SNAPSHOT.tar.gz
  4. cd presto-server-0.280-SNAPSHOT/
  5. client端访问:presto-cli/target
  6. java -jar presto-cli-0.280-SNAPSHOT-executable.jar --server=localhost:8080 默认端口为8080
  7. 测试SQL:SELECT * FROM system.runtime.nodes;
  8. 网页访问:http://localhost:8080

Griffin POC调研

安装apache-maven-3.6.3

cd griffin && mvn clean package -DskipTests=TRUE

















Livy访问查看JOB




Calcite POC调研







Calcite本地安装部署

  1. 配置Gradle,在USER_HOME/.gradle/下创建init.gradle文件

  2. init.gradle文件

allprojects{
    repositories {
        def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
        def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
        def GRADLE_LOCAL_RELEASE_URL = 'https://repo.gradle.org/gradle/libs-releases-local'
        def ALIYUN_SPRING_RELEASE_URL = 'https://maven.aliyun.com/repository/spring-plugin'

        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
                    remove repo
                }
                if (url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
                    remove repo
                }
                if (url.startsWith('http://repo.spring.io/plugins-release')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_SPRING_RELEASE_URL."
                    remove repo
                }

            }
        }
        maven {
		    allowInsecureProtocol = true
            url ALIYUN_REPOSITORY_URL
        }

        maven {
            allowInsecureProtocol = true
            url ALIYUN_JCENTER_URL
        }
        maven {
            allowInsecureProtocol = true
            url ALIYUN_SPRING_RELEASE_URL
        }
        maven {
            allowInsecureProtocol = true
            url GRADLE_LOCAL_RELEASE_URL
        }

    }
}
  1. ./gradlew build 如果跳过测试使用./gradlew build -x test
  2. 构建成功获取构建包
  3. In the release/build/distributions
    apache-calcite-1.33.0-SNAPSHOT-src.tar.gz
    apache-calcite-1.33.0-SNAPSHOT-src.tar.gz.sha512
  4. tar -zxvf apache-calcite-1.33.0-SNAPSHOT-src.tar.gz
  5. cd apache-calcite-1.33.0-SNAPSHOT-src
  6. cd example/csv/ && cp -r /mnt/poc/alldatadc/calcite/calcite-1.33.0/build .
  7. 安装配置gradle7.4.2, cd /opt/gradle
  8. wget https://services.gradle.org/distributions/gradle-7.4.2-all.zip
  9. 解压 unzip gradle-7.4.2-all.zip
  10. 配置环境变量:export PATH=$PATH:/opt/gradle/gradle-7.4.2/bin
[root@16gdata apache-calcite-1.33.0-SNAPSHOT-src]# cd example/csv/
[root@16gdata csv]# ll
total 24
drwxr-xr-x 10 root root 4096 Mar  7 18:45 build
-rw-rw-r--  1 root root 3577 Jan  2  1970 build.gradle.kts
-rw-rw-r--  1 root root  876 Jan  2  1970 gradle.properties
-rwxr-xr-x  1 root root 1793 Mar  7 18:44 sqlline
-rw-rw-r--  1 root root 1537 Jan  2  1970 sqlline.bat
drwxrwxr-x  4 root root 4096 Jan  2  1970 src
  1. 运行./sqlline
  2. 进入命令行测试sqlline
[root@16gdata csv]# !connect jdbc:calcite:model=src/test/resources/model.json admin admin
-bash: !connect: event not found
[root@16gdata csv]# ./sqlline
Building Apache Calcite 1.33.0-SNAPSHOT
sqlline version 1.12.0
sqlline> !connect jdbc:calcite:model=src/test/resources/model.json admin admin
Transaction isolation level TRANSACTION_REPEATABLE_READ is not supported. Default (TRANSACTION_NONE) will be used instead.
0: jdbc:calcite:model=src/test/resources/mode> !tables
+-----------+-------------+------------+--------------+---------+----------+------------+-----------+---------------------------+----------------+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME |  TABLE_TYPE  | REMARKS | TYPE_CAT | TYPE_SCHEM | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION |
+-----------+-------------+------------+--------------+---------+----------+------------+-----------+---------------------------+----------------+
|           | SALES       | DEPTS      | TABLE        |         |          |            |           |                           |                |
|           | SALES       | EMPS       | TABLE        |         |          |            |           |                           |                |
|           | SALES       | SDEPTS     | TABLE        |         |          |            |           |                           |                |
|           | metadata    | COLUMNS    | SYSTEM TABLE |         |          |            |           |                           |                |
|           | metadata    | TABLES     | SYSTEM TABLE |         |          |            |           |                           |                |
+-----------+-------------+------------+--------------+---------+----------+------------+-----------+---------------------------+----------------+
0: jdbc:calcite:model=src/test/resources/mode> select * from SALES.SDEPTS;
+--------+-----------+
| DEPTNO |   NAME    |
+--------+-----------+
| 10     | Sales     |
| 20     | Marketing |
| 30     | Accounts  |
| 40     | 40        |
| 50     | 50        |
| 60     | 60        |
+--------+-----------+
6 rows selected (1.336 seconds)
0: jdbc:calcite:model=src/test/resources/mode>

Doris POC调研









参考https://doris.apache.org/zh-CN/docs/install/source-install/compilation

  1. docker pull apache/doris:build-env-for-1.1.0
  2. docker run -it -v /root/.m2:/root/.m2 -v /mnt/poc/alldatadc/doris/:/root/doris/ apache/doris:build-env-for-1.1.0
  3. 进入docker
  4. wget https://archive.apache.org/dist/doris/1.1/1.1.0-rc05/apache-doris-1.1.0-src.tar.gz
  5. tar -zxvf apache-doris-1.1.0-src.tar.gz
  6. mv apache-doris-1.1.0-src doris-1.1.0
  7. sh build.sh
  8. web访问http://16gdata:8080
  9. 参考https://doris.apache.org/zh-CN/docs/get-starting/
  10. 启动fe ./bin/start_fe.sh --daemon 成功启动:curl http://127.0.0.1:8030/api/bootstrap
  11. mysql -uroot -P9030 -h127.0.0.1 然后ALTER SYSTEM ADD BACKEND “127.0.0.1:9050”;
  12. cp java-udf-jar-with-dependencies.jar ./be/lib/
  13. 启动be ./bin/start_be.sh --daemon
  14. 创建demo库表
use demo;

CREATE TABLE IF NOT EXISTS demo.example_tbl
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `date` DATE NOT NULL COMMENT "数据灌入日期时间",
    `city` VARCHAR(20) COMMENT "用户所在城市",
    `age` SMALLINT COMMENT "用户年龄",
    `sex` TINYINT COMMENT "用户性别",
    `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",
    `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",
    `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",
    `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"
)
AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES (
    "replication_allocation" = "tag.location.default: 1"
);
  1. touch sample.csv
10000,2017-10-01,北京,20,0,2017-10-01 06:00:00,20,10,10
10000,2017-10-01,北京,20,0,2017-10-01 07:00:00,15,2,2
10001,2017-10-01,北京,30,1,2017-10-01 17:05:45,2,22,22
10002,2017-10-02,上海,20,1,2017-10-02 12:59:12,200,5,5
10003,2017-10-02,广州,32,0,2017-10-02 11:20:00,30,11,11
10004,2017-10-01,深圳,35,0,2017-10-01 10:00:15,100,3,3
10004,2017-10-03,深圳,35,0,2017-10-03 10:20:22,11,6,6
  1. curl --location-trusted -u root: -T sample.csv -H “column_separator:,” http://127.0.0.1:8030/api/demo/example_tbl/_stream_load
  2. 访问http://127.0.0.1:8030/ 账密:root/空密码 输入sql查询: select * from demo.example_tbl

本地启动TIS POC调研





















  1. 部署TIS-参考tis/README.md

https://tis.pub/docs/develop/compile-running

本地启动部署Tis

  1. mvn clean install -Dmaven.test.skip=true

  2. 配置数据库

source /tis-ansible/tis_console_mysql.sql

  1. 配置项目web

vi /tis/tis-web-config/config.properties

project.name=TIS
runtime=daily

tis.datasource.type=mysql
tis.datasource.url=16gmaster
tis.datasource.port=3306
tis.datasource.username=root
tis.datasource.password=123456
tis.datasource.dbname=tis_console
zk.host=16gmaster:2181/tis/cloud

assemble.host=8gmaster
tis.host=8gmaster

  1. 启动TIS

mvn compile test -Dtest=StartTISWeb Dtis.launch.port=8080

访问 http://8gmaster:8080

  1. 部署plugins,参考plugins/README.md

本地安装部署 on Linux

  1. 安装maven3.8.1 配置settings.xml

  2. Only配置

     <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>

  1. 创建目录 /opt/data/tis/libs/plugins

  2. 执行plugin软连接配置

for f in `find /mnt/poc/alldatadc/tis_poc/plugins  -name '*.tpi' -print` do echo " ln -s $f " ln -s $f /opt/data/tis/libs/plugins/${f##*/} done ;
  1. 安装plugins

mvn clean package -Dmaven.test.skip=true -Dappname=all

  1. 部署ng-tis,参考ng-tis/README.md

本地打包部署 on Linux

  1. nvm install v10.15.3

  2. npm install -g @angular/cli@12.2.13

  3. npm run ng:serve-jit --scripts-prepend-node-path=auto

  4. curl http://localhost:4200

DataVines 数据质量POC调研











DataHub POC调研

本地开发、构建、启动 On Linux



### DataHub源码构建

### 命令行安装成功



DataHub架构



DataHub (& GMA) 架构
DatahHub 采用前后端分离 + 微服务 / 容器架构
前端:Ember + TypeScript + ES9 + ES.Next + Yarn + ESLint

服务端:Play Framework(web 框架) + Spring + Rest.li(restful 框架)+ Pegasus(数据建模语言) + Apache Samza (流处理框架)

基础设施:elastic search (5.6) + Mysql + neo4j + kafka

构建工具:Gradlew + Docker + Docker compose

DataHub 组成

datahub-gms (Generalized Metadata Store) : 元数据存储服务

datahub-gma (Generalized Metadata Architecture) : 通用元数据体系结构

GMA 是 datahub 的基础设施,提供标准化的元数据模型和访问层

datahub-frontend : 应用前端

datahub-mxe 元数据事件datahub-mce-consumer (MetadataChangeEvent):元数据变更事件,由平台或爬虫程序发起,写入到 GMS

datahub-mae-consumer (MetadataAuditEvent): 元数据审计事件,只有被成功处理的 MCE 才会产生相应的 MAE,由 GMS 发起 ,写入到 es&Neo4j

1、JAVA_HOME

1.1 安装Java-11 && 配置JAVA_HOME

sudo yum install java-11-openjdk -y

sudo yum install java-11-openjdk-devel

1.2 安装Java-8 && 不需要配置JAVA_HOME

yum install java-1.8.0-openjdk.x86_64

yum install -y java-1.8.0-openjdk-devel.x86_64

2、Python3.7以上版本

2.1 下载python3.7

mkdir -p /usr/local/python3 && cd /usr/local/python3

wget https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tar.xz

tar -xvf Python-3.7.16.tar.xz

cd Python-3.7.16

./configure --prefix=/usr/local/python3

make && make install

ln -s /usr/local/python3/bin/python3 /usr/bin/python3

验证python3.7版本

3、源码构建

3.1 安装sasl、fastjsonschema

3.1.1 yum -y install cyrus-sasl cyrus-sasl-devel cyrus-sasl-lib

3.1.2 pip3 install fastjsonschema

3.1.3 yum -y install openldap-devel

3.1.4 pip3 install python_ldap

3.1.5 cd cd smoke-test && pip install -r requirements.txt

3.2 安装命令行

./gradlew :metadata-ingestion:installDev

3.3 后端打包

执行./gradlew metadata-service:war:build

3.4 前端打包

修改node版本: 找到datahub-0.10.0/datahub-web-react/build.gradle, 修改version为’16.10.0’

export NODE_OPTIONS=“–max-old-space-size=8192”

执行./gradlew :datahub-frontend:dist -x yarnTest -x yarnLint

4 启动datahub

新增docker-compose.yml

networks:
  default:
    name: datahub_network
services:
  broker:
    container_name: broker
    depends_on:
      - zookeeper
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092
      - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1
      - KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS=0
      - KAFKA_HEAP_OPTS=-Xms256m -Xmx256m
      - KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE=false
    hostname: broker
    image: confluentinc/cp-kafka:7.2.2
    ports:
      - ${DATAHUB_MAPPED_KAFKA_BROKER_PORT:-9092}:9092
  datahub-actions:
    depends_on:
      - datahub-gms
    environment:
      - DATAHUB_GMS_HOST=datahub-gms
      - DATAHUB_GMS_PORT=8080
      - DATAHUB_GMS_PROTOCOL=http
      - DATAHUB_SYSTEM_CLIENT_ID=__datahub_system
      - DATAHUB_SYSTEM_CLIENT_SECRET=JohnSnowKnowsNothing
      - KAFKA_BOOTSTRAP_SERVER=broker:29092
      - KAFKA_PROPERTIES_SECURITY_PROTOCOL=PLAINTEXT
      - METADATA_AUDIT_EVENT_NAME=MetadataAuditEvent_v4
      - METADATA_CHANGE_LOG_VERSIONED_TOPIC_NAME=MetadataChangeLog_Versioned_v1
      - SCHEMA_REGISTRY_URL=http://schema-registry:8081
    hostname: actions
    image: acryldata/datahub-actions:${ACTIONS_VERSION:-head}
    restart: on-failure:5
  datahub-frontend-react:
    container_name: datahub-frontend-react
    depends_on:
      - datahub-gms
    environment:
      - DATAHUB_GMS_HOST=datahub-gms
      - DATAHUB_GMS_PORT=8080
      - DATAHUB_SECRET=YouKnowNothing
      - DATAHUB_APP_VERSION=1.0
      - DATAHUB_PLAY_MEM_BUFFER_SIZE=10MB
      - JAVA_OPTS=-Xms512m -Xmx512m -Dhttp.port=9002 -Dconfig.file=datahub-frontend/conf/application.conf -Djava.security.auth.login.config=datahub-frontend/conf/jaas.conf -Dlogback.configurationFile=datahub-frontend/conf/logback.xml -Dlogback.debug=false -Dpidfile.path=/dev/null
      - KAFKA_BOOTSTRAP_SERVER=broker:29092
      - DATAHUB_TRACKING_TOPIC=DataHubUsageEvent_v1
      - ELASTIC_CLIENT_HOST=elasticsearch
      - ELASTIC_CLIENT_PORT=9200
    hostname: datahub-frontend-react
    image: ${DATAHUB_FRONTEND_IMAGE:-linkedin/datahub-frontend-react}:${DATAHUB_VERSION:-head}
    ports:
      - ${DATAHUB_MAPPED_FRONTEND_PORT:-9002}:9002
    volumes:
      - ${HOME}/.datahub/plugins:/etc/datahub/plugins
  datahub-gms:
    container_name: datahub-gms
    depends_on:
      - mysql
    environment:
      - DATAHUB_SERVER_TYPE=${DATAHUB_SERVER_TYPE:-quickstart}
      - DATAHUB_TELEMETRY_ENABLED=${DATAHUB_TELEMETRY_ENABLED:-true}
      - DATAHUB_UPGRADE_HISTORY_KAFKA_CONSUMER_GROUP_ID=generic-duhe-consumer-job-client-gms
      - EBEAN_DATASOURCE_DRIVER=com.mysql.jdbc.Driver
      - EBEAN_DATASOURCE_HOST=mysql:3306
      - EBEAN_DATASOURCE_PASSWORD=datahub
      - EBEAN_DATASOURCE_URL=jdbc:mysql://mysql:3306/datahub?verifyServerCertificate=false&useSSL=false&useUnicode=yes&characterEncoding=UTF-8
      - EBEAN_DATASOURCE_USERNAME=datahub
      - ELASTICSEARCH_HOST=elasticsearch
      - ELASTICSEARCH_INDEX_BUILDER_MAPPINGS_REINDEX=true
      - ELASTICSEARCH_INDEX_BUILDER_SETTINGS_REINDEX=true
      - ELASTICSEARCH_PORT=9200
      - ENTITY_REGISTRY_CONFIG_PATH=/datahub/datahub-gms/resources/entity-registry.yml
      - ENTITY_SERVICE_ENABLE_RETENTION=true
      - ES_BULK_REFRESH_POLICY=WAIT_UNTIL
      - GRAPH_SERVICE_DIFF_MODE_ENABLED=true
      - GRAPH_SERVICE_IMPL=elasticsearch
      - JAVA_OPTS=-Xms1g -Xmx1g
      - KAFKA_BOOTSTRAP_SERVER=broker:29092
      - KAFKA_SCHEMAREGISTRY_URL=http://schema-registry:8081
      - MAE_CONSUMER_ENABLED=true
      - MCE_CONSUMER_ENABLED=true
      - PE_CONSUMER_ENABLED=true
      - UI_INGESTION_ENABLED=true
    hostname: datahub-gms
    image: ${DATAHUB_GMS_IMAGE:-linkedin/datahub-gms}:${DATAHUB_VERSION:-head}
    ports:
      - ${DATAHUB_MAPPED_GMS_PORT:-8080}:8080
    volumes:
      - ${HOME}/.datahub/plugins:/etc/datahub/plugins
  datahub-upgrade:
    command:
      - -u
      - SystemUpdate
    container_name: datahub-upgrade
    environment:
      - EBEAN_DATASOURCE_USERNAME=datahub
      - EBEAN_DATASOURCE_PASSWORD=datahub
      - EBEAN_DATASOURCE_HOST=mysql:3306
      - EBEAN_DATASOURCE_URL=jdbc:mysql://mysql:3306/datahub?verifyServerCertificate=false&useSSL=false&useUnicode=yes&characterEncoding=UTF-8
      - EBEAN_DATASOURCE_DRIVER=com.mysql.jdbc.Driver
      - KAFKA_BOOTSTRAP_SERVER=broker:29092
      - KAFKA_SCHEMAREGISTRY_URL=http://schema-registry:8081
      - ELASTICSEARCH_HOST=elasticsearch
      - ELASTICSEARCH_PORT=9200
      - ELASTICSEARCH_INDEX_BUILDER_MAPPINGS_REINDEX=true
      - ELASTICSEARCH_INDEX_BUILDER_SETTINGS_REINDEX=true
      - ELASTICSEARCH_BUILD_INDICES_CLONE_INDICES=false
      - GRAPH_SERVICE_IMPL=elasticsearch
      - DATAHUB_GMS_HOST=datahub-gms
      - DATAHUB_GMS_PORT=8080
      - ENTITY_REGISTRY_CONFIG_PATH=/datahub/datahub-gms/resources/entity-registry.yml
    hostname: datahub-upgrade
    image: ${DATAHUB_UPGRADE_IMAGE:-acryldata/datahub-upgrade}:${DATAHUB_VERSION:-head}
  elasticsearch:
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
      - ES_JAVA_OPTS=-Xms256m -Xmx512m -Dlog4j2.formatMsgNoLookups=true
    healthcheck:
      retries: 4
      start_period: 2m
      test:
        - CMD-SHELL
        - curl -sS --fail 'http://localhost:9200/_cluster/health?wait_for_status=yellow&timeout=0s' || exit 1
    hostname: elasticsearch
    image: elasticsearch:7.10.1
    mem_limit: 1g
    ports:
      - ${DATAHUB_MAPPED_ELASTIC_PORT:-9200}:9200
    volumes:
      - esdata:/usr/share/elasticsearch/data
  elasticsearch-setup:
    container_name: elasticsearch-setup
    depends_on:
      - elasticsearch
    environment:
      - ELASTICSEARCH_HOST=elasticsearch
      - ELASTICSEARCH_PORT=9200
      - ELASTICSEARCH_PROTOCOL=http
    hostname: elasticsearch-setup
    image: ${DATAHUB_ELASTIC_SETUP_IMAGE:-linkedin/datahub-elasticsearch-setup}:${DATAHUB_VERSION:-head}
  kafka-setup:
    container_name: kafka-setup
    depends_on:
      - broker
      - schema-registry
    environment:
      - DATAHUB_PRECREATE_TOPICS=${DATAHUB_PRECREATE_TOPICS:-false}
      - KAFKA_BOOTSTRAP_SERVER=broker:29092
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
    hostname: kafka-setup
    image: ${DATAHUB_KAFKA_SETUP_IMAGE:-linkedin/datahub-kafka-setup}:${DATAHUB_VERSION:-head}
  mysql:
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --default-authentication-plugin=mysql_native_password
    container_name: mysql
    environment:
      - MYSQL_DATABASE=datahub
      - MYSQL_USER=datahub
      - MYSQL_PASSWORD=datahub
      - MYSQL_ROOT_PASSWORD=datahub
    hostname: mysql
    image: mysql:5.7
    ports:
      - ${DATAHUB_MAPPED_MYSQL_PORT:-33061}:3306
    volumes:
      - ../mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
      - mysqldata:/var/lib/mysql
  mysql-setup:
    container_name: mysql-setup
    depends_on:
      - mysql
    environment:
      - MYSQL_HOST=mysql
      - MYSQL_PORT=3306
      - MYSQL_USERNAME=datahub
      - MYSQL_PASSWORD=datahub
      - DATAHUB_DB_NAME=datahub
    hostname: mysql-setup
    image: ${DATAHUB_MYSQL_SETUP_IMAGE:-acryldata/datahub-mysql-setup}:${DATAHUB_VERSION:-head}
  schema-registry:
    container_name: schema-registry
    depends_on:
      - broker
    environment:
      - SCHEMA_REGISTRY_HOST_NAME=schemaregistry
      - SCHEMA_REGISTRY_KAFKASTORE_SECURITY_PROTOCOL=PLAINTEXT
      - SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS=broker:29092
    hostname: schema-registry
    image: confluentinc/cp-schema-registry:7.2.2
    ports:
      - ${DATAHUB_MAPPED_SCHEMA_REGISTRY_PORT:-8081}:8081
  zookeeper:
    container_name: zookeeper
    environment:
      - ZOOKEEPER_CLIENT_PORT=2181
      - ZOOKEEPER_TICK_TIME=2000
    hostname: zookeeper
    image: confluentinc/cp-zookeeper:7.2.2
    ports:
      - ${DATAHUB_MAPPED_ZK_PORT:-2181}:2181
    volumes:
      - zkdata:/var/lib/zookeeper
version: "2.3"
volumes:
  esdata: null
  mysqldata: null
  zkdata: null

python3 -m datahub docker quickstart --start -f docker-compose.yml

5 停止datahub

python3 -m datahub docker quickstart --stop -f docker-compose.yml

dinky新增hive2flink任务类型

1, 支持执行提交hive sql running on flink

2, 测试代码

@Test
void testCreateDatabase() {
    sql("create database db1").ok("CREATE DATABASE `DB1`");
    sql("create database db1 comment 'comment db1' location '/path/to/db1'")
            .ok(
                    "CREATE DATABASE `DB1`\n"
                            + "COMMENT 'comment db1'\n"
                            + "LOCATION '/path/to/db1'");
    sql("create database db1 with dbproperties ('k1'='v1','k2'='v2')")
            .ok(
                    "CREATE DATABASE `DB1` WITH DBPROPERTIES (\n"
                            + "  'k1' = 'v1',\n"
                            + "  'k2' = 'v2'\n"
                            + ")");
}

3, 结果预览

测试FlinkHiveSqlParser Passed



Flink数据血缘初体验

1 结果预览



2 创建FlinkDDL

参考Resource/FlinkDDLSQL.sql

CREATE TABLE data_gen (

amount BIGINT

) WITH (

‘connector’ = ‘datagen’

‘rows-per-second’ = ‘1’

‘number-of-rows’ = ‘3’

‘fields.amount.kind’ = ‘random’

‘fields.amount.min’ = ‘10’

‘fields.amount.max’ = ‘11’);

CREATE TABLE mysql_sink (

amount BIGINT

PRIMARY KEY (amount) NOT ENFORCED

) WITH (

‘connector’ = ‘jdbc’

‘url’ = ‘jdbc:mysql://localhost:3306/test_db’

‘table-name’ = ‘test_table’

‘username’ = ‘root’

‘password’ = ‘123456’

‘lookup.cache.max-rows’ = ‘5000’

‘lookup.cache.ttl’ = ‘10min’

);

INSERT INTO mysql_sink SELECT amount as amount FROM data_gen;

3 执行com.platform.FlinkLineageBuild

获取结果

1, Flink血缘构建结果-表:

[LineageTable{id=‘4’, name=‘data_gen’, columns=[LineageColumn{name=‘amount’, title=‘amount’}]}

LineageTable{id=‘6’, name=‘mysql_sink’, columns=[LineageColumn{name=‘amount’, title=‘amount’}]}]

表ID: 4

表Namedata_gen

表ID: 4

表Namedata_gen

表-列LineageColumn{name=‘amount’, title=‘amount’}

表ID: 6

表Namemysql_sink

表ID: 6

表Namemysql_sink

表-列LineageColumn{name=‘amount’, title=‘amount’}

2, Flink血缘构建结果-边:

[LineageRelation{id=‘1’, srcTableId=‘4’, tgtTableId=‘6’, srcTableColName=‘amount’, tgtTableColName=‘amount’}]

表-边: LineageRelation{id=‘1’, srcTableId=‘4’, tgtTableId=‘6’, srcTableColName=‘amount’, tgtTableColName=‘amount’}

AllData Doris



AllData全新定制一站式场景化大数据中台



大数据组件管理DOCKER FOR DATA PLATFORM

1, 配置主机服务HOST



2, 启动大数据集群



3, YARN正常访问



4, HIVE正常使用



5, HDFS正常访问



6, ES健康检测



7, KIBANA UI访问



8, PRESTO UI访问



9, HBASE正常访问



10, FLIKN RUNTIME WEB 正常访问



使用Docker/K8S云原生方案-控制各种组件起停

1, BUSINESS FOR ALL DATA PLATFORM 商业项目

2, BUSINESS FOR ALL DATA PLATFORM 计算引擎

3, DEVOPS FOR ALL DATA PLATFORM 运维引擎

4, DATA GOVERN FOR ALL DATA PLATFORM 数据治理引擎

5, DATA Integrate FOR ALL DATA PLATFORM 数据集成引擎

6, AI FOR ALL DATA PLATFORM 人工智能引擎

7, DATA ODS FOR ALL DATA PLATFORM 数据采集引擎

8, OLAP FOR ALL DATA PLATFORM OLAP查询引擎

9, OPTIMIZE FOR ALL DATA PLATFORM 性能优化引擎

10, DATABASES FOR ALL DATA PLATFORM 分布式存储引擎

DataSophon POC



一, 项目地址

https://github.com/datasophon/datasophon




二, 官方文档

https://datasophon.github.io/datasophon-website/docs/current/%E6%A6%82%E8%A7%88



三, DataSophon+安装包

提供了一系列包, 可以集成自定义服务

DataSophon+tar.gz安装包, 直接替换Ambari+HDP, 解决大数据集群纳管组件的生命周期问题



四, 架构流程图



五, 组件自定义服务配置

https://datasophon.github.io/datasophon-website/docs/current/%E5%BC%80%E5%8F%91%E8%80%85%E6%8C%87%E5%8D%97/%E7%BB%84%E4%BB%B6%E9%9B%86%E6%88%90/commit_code

六, 三件套做监控



七, 未来规划



当前版本v1.1.0

支持系统租户管理

主机管理支持机架管理

YARN资源调度支持容量调度器

YARN资源调度支持标签调度

支持组件集成Kerberos, 可自由开启和关闭kerberos认证集成

八, 局限

版本与代码没有分离, 安装版本的hadoop-3.3.3



九, 下载, 安装, 解压

丝滑切换Ambari Python install, status, start, stop



十, 生态集成

Dinky, Streampark, Doris等



十一, 启动逻辑

启动DS直接就执行对应的program



十二, 自定义属性

自定义模板+freemaker, 应用自定义属性



十三, Actor监听消息通信

Worker启动并监听Actor失败告警



Flink Table Store && Lake Storage POC

2.1 SQL~Flink table store poc

set execution.checkpointing.interval=15sec;

CREATE CATALOG alldata_catalog WITH (

‘type’=‘table-store’

‘warehouse’=‘file:/tmp/table_store’

);

USE CATALOG alldata_catalog;

CREATE TABLE word_count (

word STRING PRIMARY KEY NOT ENFORCED

cnt BIGINT

);

CREATE TEMPORARY TABLE word_table (

word STRING

) WITH (

'connector' = 'datagen'

'fields.word.length' = '1'

);

INSERT INTO word_count SELECT word, COUNT(*) FROM word_table GROUP BY word;

– POC Test OLAP QUERY

SET sql-client.execution.result-mode = ‘tableau’;

RESET execution.checkpointing.interval;

SET execution.runtime-mode = ‘batch’;

SELECT * FROM word_count;

– POC Test Stream QUERY

– SET execution.runtime-mode = ‘streaming’;

– SELECT interval, COUNT(*) AS interval_cnt FROM

– (SELECT cnt / 10000 AS interval FROM word_count) GROUP BY interval;

2.2 Flink Runtime Web



2.3 Flink Batch



2.4 Flink Olap Read



2.5 Flink Stream Read



Dlink二开新增Flink1.16.0支持

1, Dlink配置Flink Table Store相关依赖



### 2, Dlink启动并运行成功

### 3, OLAP查询

4, Flink1.16.0 Dlink流式读

4.1 Stream Read 1





4.2 Stream Read 2




Architecture




Component Description Important Composition
ai AI STUDIO FOR ALL DATA PLATFORM artificial intelligence engine 人工智能引擎
assembly WHOLE PACKAGE BUILD FOR ALL DATA PLATFORM assembly engine 整包构建引擎
cluster DATA SRE FOR ALL DATA PLATFORM OLAP query engine 智能大数据运维引擎
crawlab CRAWLER PLATFORM FOR ALL DATA PLATFORM commerce engine 爬虫引擎系统
document DOCUMENT FOR ALL DATA PLATFORM OLAP query engine 官方文档
dts DTS FOR ALL DATA PLATFORM DATA DTS engine 数据集成引擎
factory FACTORY FOR ALL DATA PLATFORM DATA DTS engine 数据工厂引擎
fs DATA STORAGE FOR ALL DATA PLATFORM DATA STORAGE engine 大数据存储引擎
govern DATA GOVERN FOR ALL DATA PLATFORM Data Governance Engine 数据治理引擎
iot IOT FOR ALL DATA PLATFORM Data Governance Engine 云原生IOT开发框架
k8s Koordinator FOR ALL DATA PLATFORM Data Task Engine 知识图谱引擎
kg KNOWLEDGE GRAPH FOR ALL DATA PLATFORM Data Task Engine 知识图谱引擎
lake LAKEHOUSE FOR ALL DATA PLATFORM ONE LAKE engine 数据湖引擎
market MARKET FOR ALL DATA PLATFORM MARKET engine 数据实验场引擎
olap OLAP FOR ALL DATA PLATFORM OLAP query engine 混合OLAP查询引擎
trade TRADE FOR ALL DATA PLATFORM TRADE Engine TRADE引擎
wiki WIKI FOR ALL DATA PLATFORM WIKI Engine AllData知识库
alldata AllData社区项目通过二开大数据生态组件, 以及大数据采集, 大数据存储, 大数据计算, 大数据开发来建设一站式细分领域数字化解决方案 Github一站式细分领域AllData数字化解决方案社区项目

AllData社区商业计划图


AllData社区项目业务流程图


AllData社区项目树状图


全站式AllData产品路线图



AllData社区项目时间旅行


实时推荐系统业务流程图


AllData总部前后端解决方案

包括AllData前后端解决方案, 多租户运维平台前后端

基于eladmin + tenant 建设AllData前后端解决方案

1, AllData前端解决方案 studio/eladmin-web

2, AllData后端解决方案 studio/eladmin

3, 多租户运维平台前端 studio/tenant

4, 多租户运维平台前端 studio/tenantBack

Integration

离线商城数仓展示



知识图谱建设方法论



## 知识图谱(Knowledge Graph)

知识图谱建设方法论:

一, 知识图谱技术架构: 确定知识的表示方式和知识的存储方式,

二, 知识图谱建设方法论: 知识图谱建设可以分为知识建模, 知识抽取, 知识验证这样几个阶段, 形成一个知识图谱

从知识抽取的内容上, 又可以分为实体抽取, 属性抽取, 关系抽取, 事件抽取:

实体抽取指从数据源中检测到可命名的实体, 并将它们分类到已建模的类型中, 例如人, 组织, 地点, 时间等等,

属性抽取是识别出命名实体的具体属性,

关系抽取是识别出实体与实体之间的关系, 例如从句子“著名歌手周杰伦的妻子昆凌”中识别出“周杰伦”与“昆凌”之间的夫妻关系,

事件抽取是识别出命名实体相关的事件信息, 例如“周杰伦”与“昆凌”结婚就是一个事件

可以看出实体抽取, 属性抽取, 关系抽取是抽取我们在知识建模中定义的拓扑结构部分数据

事件抽取是事件建模相关数据的抽取, 所以在领域知识图谱建设中, 也需要包括数据准备域的抽取方式, 处置域的数据抽取方式

知 识 验 证

从各种不同数据源抽取的知识, 并不一定是有效的知识, 必须进行知识的验证, 将有效的, 正确的知识进入知识库造成知识不准确的原因

通常是原始数据存在错误, 术语存在二义性, 知识冲突等等, 例如前面提到的"1#"压水堆, "1号"压水堆, “一号”压水堆这三个词对应一个实体

如果在抽取中没有合理定义规则, 这就需要在知识验证阶段得到处理, 以便形成闭环

三, 基于知识图谱建设应用: 每一类应用的侧重点不同, 使用技术和达到的效果也不同, 我们总结为知识推理类, 知识呈现类, 知识问答类, 知识共享类

1, 知识图谱建设

1.1 人工数据标注工具: https://github.com/doccano/doccano

1.2 自动标注+知识抽取: https://github.com/zjunlp/DeepKE

2, 知识存储: https://github.com/alibaba/GraphScope

3, 知识图谱应用: https://github.com/lemonhu/stock-knowledge-graph

从0到1建设大数据解决方案

从0到1建设大数据解决方案是一个相对比较宏观的过程, 需要考虑从业务需求分析, 数据采集, 数据处理, 数据存储, 数据查询分析到数据可视化展示等多个环节,

以下是一个简单的大数据解决方案建设方法论:

需求分析: 首先需要明确业务需求, 包括数据源, 数据量, 数据类型, 数据质量等等, 可以与业务人员进行沟通, 制定出明确的需求和目标, 确定解决方案的规模和数据的范围

数据采集: 根据需求分析结果, 确定数据来源和采集方式, 可以使用采集工具或者开发自定义采集程序, 采集的数据需要进行清洗和过滤, 确保数据的准确性和完整性

数据处理: 数据采集后需要进行清洗, 整合, 加工等处理, 以便后续的存储和分析, 数据处理可以使用数据流处理或者批处理等方式

数据存储: 对于大数据解决方案, 数据存储是一个非常重要的环节, 需要选择合适的存储方案, 包括分布式存储, 列式存储, 内存数据库等, 可以根据数据量和查询分析方式等要素进行选择

数据查询分析: 建立数据查询和分析体系, 需要考虑数据查询和分析的灵活性和效率, 可以使用数据查询引擎和分析工具, 如Hadoop, Spark, Hive, Presto, Superset等

数据可视化展示: 通过数据可视化展示方式, 使数据分析结果直观, 易于理解, 可以使用开源的可视化工具, 如Tableau, Power BI, Echarts等

安全与隐私: 对于大数据解决方案, 安全和隐私是非常重要的, 需要采取一系列的安全措施, 包括数据加密, 访问控制, 数据备份等, 以保障数据的安全性和隐私性

评估和优化: 在建设过程中需要不断评估和优化解决方案, 调整方案架构和技术选型, 以提高解决方案的性能和效率, 满足业务需求和用户期望

以上是一个简单的从0到1建设大数据解决方案的方法论, 需要根据实际情况进行具体的调整和优化

数字化转型

数字化转型是指将传统企业在信息化, 网络化, 智能化, 数据化等技术的支撑下, 对业务, 组织, 文化, 价值创造, 利益分配等方面进行全面的革新和升级,

以适应市场, 技术, 用户等环境的变化数字化转型的目标是实现企业从传统生产经营方式向数字化经营模式的转变, 提高企业的效率, 创新能力, 市场竞争力和盈利能力

数字化转型方法论可以概括为以下几个方面:

确定数字化转型的战略目标和方向, 明确数字化转型的意义和价值, 为数字化转型的实施提供方向和支撑

分析业务过程, 识别业务痛点和机会, 确定数字化转型的重点领域和项目, 以提高效率, 创新能力和用户体验为导向

优化组织结构和流程, 建立数字化组织架构和工作流程, 激发组织创新和员工动力, 提高业务效率和创新能力

采用先进的信息技术和数据技术, 例如云计算, 大数据, 人工智能, 物联网等, 为数字化转型提供技术支持

建立数字化文化, 通过数字化营销, 数字化服务, 数字化协同等方式, 提升品牌价值, 用户满意度和市场影响力

实施数字化监管, 建立数字化安全, 合规和风险控制体系, 确保数字化转型的合法性, 合规性和可持续性

数字化转型是一个复杂的过程, 需要综合运用战略, 组织, 技术, 文化, 监管等多方面的手段和方法, 才能取得成功

Community

联系作者: https://docs.qq.com/doc/DVFZ1RFhGYkJRSGxN文章来源地址https://www.toymoban.com/news/detail-667781.html

到了这里,关于开源自定义数据中台AllData第一章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第一章-数据结构绪论

    数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 程序设计的实质是选择一个好的结构,再设计一种好的算法。 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处

    2024年02月13日
    浏览(35)
  • 第一章 数据库操作

    1.1 创建数据库 创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据,这是进行表操作的基础,也是数据库管理的基础 在MySQL中创建数据库之前,可以使用show语句来显示当前已经存在的数据库,具体SQL语句如下 创建数据库的SQL语句如下,其中 参数database_name代

    2024年02月05日
    浏览(62)
  • 第一章 数据库的操作

    (1)语法 假设我们想要创建一个名称为D1的数据库,可以写出下图中的MySQL语句。 (2)字符集与校验规则 a.定义 字符集顾名思义字符的集合。但 这个字符的集合中不仅包含字符,还包含了每个字符对应的数字编码 。比如我们在c++和c中常用的字符集:ASCII表。 在了解了字符

    2024年02月16日
    浏览(49)
  • 408数据结构第一章

    1.数据 数据是信息的 载体 计算机程序 识别和处理 的符号的集合 2.数据元素 数据的 基本单位 整体 进行考虑和处理 若干 数据项 组成 数据项是构成元素的不可分割的 最小单位 3.数据对象 具有 相同性质 的数据元素的集合 4.数据类型 原子类型 结构类型 抽象数据类型 5.数据结

    2024年02月08日
    浏览(49)
  • 【数据库概论】第一章 数据库概论

    数据 数据是数据库中存储的基本对象,一般数据是描述事物的符号记录,这种符号记录可以输数字,也可以是文字、图形、音频等。 数据库 数据库是长期存储在计算机内有组织的,可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,基友较小

    2024年02月05日
    浏览(41)
  • 大数据英文考试复习——第一章(了解大数据)

    1.概念和术语 1.1 什么是BI(商业智能) 1.2 什么是KPI(关键性能指标) 1.3 什么是数据集 1.4 什么是analysis 1.5 什么是analytics 2.大数据的特点 3.大数据的用途 BI代表商业智能(Business Intelligence),它是一种利用技术和工具来收集、整理、分析和可视化企业内部和外部数据的过程

    2024年02月03日
    浏览(38)
  • 数据分析Pandas专栏---第一章<数据清洗>

    当我们使用爬虫从网上收集到大量的数据时,经常会面临一个重要任务:对这些数据进行清洗和整理,以便进一步分析和利用。在Python中,pandas是一个功能强大且广泛使用的数据处理库,它提供了各种灵活而高效的工具,可以方便地进行数据清洗和转换。本篇文章将重点介绍

    2024年02月21日
    浏览(43)
  • 大数据技术与原理第一章

    大数据时代—第三次信息化浪潮 大数据的概念: 1.数据量大 2.数据类型繁多 3.处理速度快 4.价值密度低 大数据的计算模式 1.批处理计算 2.流计算 3.图计算 4.查询分析计算 大数据对科学研究的影响(四种范式): 1.第一种范式:实验科学 2.第二种范式:理论科学 3.第三种范式

    2024年02月02日
    浏览(44)
  • 大数据技术原理与应用——第一章

    三次信息化浪潮 信息化浪潮 时间 标志 解决的问题 第一次信息化浪潮 1980 个人计算机 信息处理 第二次信息化浪潮 1995 互联网 信息传输 第三次信息化浪潮 2010 大数据、云计算、互联网 信息爆炸 大数据的技术支撑 数据产生方式 数据量大 “大数据摩尔定律”:人类产生的数

    2024年01月16日
    浏览(42)
  • 数据结构笔记(王道考研) 第一章:绪论

    大部分内容基于中国大学MOOC的2021考研数据结构课程所做的笔记,该课属于付费课程(不过盗版网盘资源也不难找。。。)。后续又根据23年考研的大纲对内容做了一些调整,将二叉排序树和平衡二叉树的内容挪到了查找一章,并增加了并查集、平衡二叉树的删除、红黑树的内

    2024年02月14日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包