文章 查看内容

海量数据文件方式同步方案

海量数据文件方式同步方案

134 0 其他 2024-10-11 09:45 发布者: 观小浩

一种大数据量的快速同步方案

适用场景

  • 每次更新数据体量较大,使用传统的JDBC抽取方式效率低,速度慢,不能满足需求
  • 客户自己有一定的开发能力,有能力将数仓(一般为Hive)中的数据批量导出转成符合观远要求的数据格式文件parquet格式,并把这些文件按观远指定的路径放至到BI服务器端。

接口文档说明

1.路径及文件

1)上传至如下目录下

/home/guandata/data/guandata-store/upload_dataset (非 minio 环境)

/home/guandata/data/minio/guandata-store/upload_dataset minio 环境)

minio要注意, 看minio在那台机器上,不要传错机器了

2每一个数据集在此目录下存储成一个目录,目录名以数据集的 id 命名,即dsId

/home/guandata/data/guandata-store/upload_dataset/{dsid} (非 minio 环境)

/home/guandata/data/minio/guandata-store/upload_dataset/{dsid} (minio 环境)

2. 文件格式

(1)存为parquet 文件格式, snappy压缩,写成文件组,不要写单个较大的文件。

(2)需对字段名中的如下特殊字符做转义处理:
' ', ',' , ';', '{', '}', '(', ')', '\n', '\t', '=', '.'

选用的转义字符为 '%' 故对'%' 也需要做转义。

3.数据更新接口

老:

将数据文件拷贝到指定路径下后,调用以下接口通知 BI 服务进行数据集更新。

URL
$home_url/public-api/data-source/{dsId}/refresh-with-file

METHOD
GET

Header

添加x-auth-token 该Token为用户登录系统后的Token,登录接口可参考sign-in接口。

PARAMETERS

Name

Location

类型

含义

是否必填

备注

dsId

Path

String

数据集 id

overwrite

Query

Boolean

是否全量更新

true:全量,false:增量

fileType

Query

String

文件类型

PARQUET, DELTA_LAKE

备注:6.0版本开始支持DELTA_LAKE

RESPONSE

{
    "result": "ok",
    "response": {
        "taskId": "6462ab30-9aff-11ee-8005-652e754fa01a",// 生成的数据集更新任务id
        "status": "已提交",
        "result": "处理中"
    }
},
	"error":                                            //  失败时返回
    {
      "status": 500,                                    // 错误码
      "message": "提交失败",                          // 错误信息
      "detail": {}                                      // 错误的详细信息
    }
}

新:

请求方式:GET

请求地址:/public-api/data-source/refresh-with-file

参数名

参数值说明

Location

类型

是否必填

备注

token

应用Token

Header

String

在观远平台中获得

dsId

数据集ID

URL

String

overwrite

是否覆盖历史数据

URL

Boolean

true 表示覆盖;false 表示新增

fileType

数据文件类型

URL

String

文件类型:PARQUET、DELTA_LAKE

非必填,不填后端默认按PARQUET类型处理

RESPONSE

{
    "result": "ok",
    "response": {
        "taskId": "87469210-9b1d-11ee-8005-652e754fa01a",
        "status": "已提交",
        "result": "处理中"
    }
}

4.task轮询接口

4.1 接口简介
请求方式:GET
请求地址:/public-api/task/status
4.2 参数说明

参数名

参数值说明

Location

类型

是否必填

备注

token

应用Token

Header

String


在观远平台中获得

taskId

任务ID

URL

String


其他前置API返回的任务ID

4.3 请求与响应示例

{
    "result": "ok",
    "response": {
        "taskId": "6462ab30-9aff-11ee-8005-652e754fa01a",
        "status": "FINISHED",
        "result": {
            "status": "FINISHED",
            "rowCount": 13
        },
        "startTime": "2023-12-15T12:06:58.000+08:00",
        "submitTime": "2023-12-15T12:06:58.000+08:00",
        "finishedTime": "2023-12-15T12:07:05.000+08:00",
        "endTime": "2023-12-15T12:07:06.000+08:00",
        "runningDuration": 7,
        "queueingDuration": 0
    }
}

如果任务执行完成,则 response.status 为 FINISHED,如果更新成功,则 response.result.status 为 FINISHED。





路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2024 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部