首页 > 其他分享 >大文件上传功能在标签服务的简单应用和代码实现

大文件上传功能在标签服务的简单应用和代码实现

时间:2023-06-14 15:02:55浏览次数:37  
标签:文件 标签 代码 本地 分片 上传 群组

各位看官大家好,今天给大家分享的又是一篇实战文章,希望大家能够喜欢。

目前「袋鼠云客户数据洞察平台」标签服务的群组按种类划分,可以分为三大类,分别是实时群组、动态群组以及静态群组。如果按创建方式划分则有两种,分别是通过圈群的方式创建以及通过上传本地文件进行维度匹配的方式创建得到本地群组,其中本地群组属于静态群组。

除了本地群组外的其他群组目前都是采用圈群的方式生成匹配 SQL,然后执行相应的 SQL 得到相应查询维度的数据并入库到群组表,这种方式比较方便,可以快速得到一个用户期望的群组。

大文件上传功能在标签服务的简单应用和代码实现_文件上传

但是有那么一种场景,假设想要设置的条件很分散,通过圈群配置的时候比较复杂,那么只能通过上传文件的方式进行匹配,这就需要用户上传本地文件,通过指定匹配维度的方式来生成本地群组。

大文件上传功能在标签服务的简单应用和代码实现_文件上传_02

如果用户上传的本地文件很小,那么比较简单,按单个文件直接上传解析即可。如果用户上传的文件很大,有50M,那么就需要采用分片的方式进行上传,本文和大家分享一下这两种文件上传的代码实现。

小文件上传的实现

小文件上传的主要流程包括将文件上传到服务器,并获得文件的编码格式,文件上传完毕后,异步解析文件并得到本地群组。

将文件上传到 HDFS 并保存原始文件到 SFTP,上传到 HDFS 之后,通过 SQL 来与实体对应的大宽表进行数据匹配,最终生成本地群组。

大文件上传功能在标签服务的简单应用和代码实现_群组_03

小文件直接上传即可,代码如下,上传完成后,获取文件的编码格式,用于后续的文件解析。

大文件上传功能在标签服务的简单应用和代码实现_文件上传_04

大文件上传的实现

前端将大文件按指定大小分片,并计算原始文件的 md5 和每个分片文件的 md5,分别用于文件校验以及分片文件断点续传。接口入参代码设计如下:

大文件上传功能在标签服务的简单应用和代码实现_群组_05

大文件分片实现部分核心代码如下:

大文件上传功能在标签服务的简单应用和代码实现_上传_06

分片文件重新在服务器整合为一个大文件的整体代码如下:

大文件上传功能在标签服务的简单应用和代码实现_上传_07

大文件上传功能在标签服务的简单应用和代码实现_上传_08

单个分片的数据接收并写入代码如下:

大文件上传功能在标签服务的简单应用和代码实现_文件上传_09

当检测到上传的文件是最后一个分片文件的时候,待分片数据写入完成后,需要对服务器上的文件进行 md5 校验来保证文件数据的一致性。

当文件上传到服务器完成后,需要将文件上传到 HDFS 以及SFTP,代码如下:

大文件上传功能在标签服务的简单应用和代码实现_文件上传_10

大文件上传功能在标签服务的简单应用和代码实现_群组_11

最终得到的本地群组如下:

大文件上传功能在标签服务的简单应用和代码实现_群组_12

大文件上传功能在标签服务的简单应用和代码实现_上传_13

《数据治理行业实践白皮书》下载地址:https://fs80.cn/380a4b

《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网

标签:文件,标签,代码,本地,分片,上传,群组
From: https://blog.51cto.com/u_15137832/6477243

相关文章

  • 2023-06-14 记录一下vue组件如何调用App.vue里面的方法(代码来至chatGpt)
    可以通过在子组件中使用$emit方法来触发App.vue中的方法。具体步骤如下:在App.vue中定义一个方法<script>exportdefault{methods:{appMethod(){console.log('调用了App.vue中的方法')}}}</script>在子组件中使用$emit方法触发该方......
  • 低代码工具:jvs-list(列表引擎)2.1.7功能清单及新增功能介绍
    在低代码开发平台中,列表页是一个用于显示数据列表的页面。它通常用于展示数据库中的多条记录,并提供搜索、排序和筛选等功能,以方便用户对数据进行查找和浏览。jvs-list是jvs快速开发平台的列表页的配置引擎,它和普通的crud具备更好的交互操作性,主要特点如下:支持动态模型创建,列表引擎......
  • 为开发者打造的开源低代码开发平台
    低代码是一种软件开发技术,衍生于软件开发的高级语言,让开发者通过可视化的方式,以更少的编码,更快速地构建和交付应用软件,全方位降低软件的开发成本。近年来,开发者的范畴也在不断扩大,包括甲方测试人员、产品经理等接受过专业培训、具备软件开发思维和代码基础知识的岗位;ISV、SI合作伙......
  • 区块链底层算法基础:有限群及其代码实现
    区块链完全可以说是人类智慧的结晶,它的诞生是人类科技文明发展到一定程度的结果展现。区块链的功能得以实现要有赖于加解密技术的发展,而后者又来源于数论和抽象代数几百年的发展,因此要把握区块链的技术思路,不了解其加解密原理,那你就不可能掌握区块链的技术精髓,所以我们庖丁解牛,一点......
  • 解决docker中gitlab的ssh拉取代码需要密码异常的问题
    安装gitlab命令dockerrun--name='gitlab'-d--publish222:22--publish1443:443--publish18080:80--restartalways--privileged=true--volume/home/docker_mount/gitlab/config:/etc/gitlab--volume/home/docker_mount/gitlab/logs:/var/log/gitlab--v......
  • 拼多多接口|api接口数据采集获取商品详情数据源代码Java演示
    ​拼多多提供了商品API,可以通过该API获取拼多多所有商品的详细信息,具体步骤如下: 申请开放平台接入。注册获取apikey和apisecret,调用API时需提供。调用拼多多API,获取商品详情。请求参数:参数说明通用参数说明version:API版本key:调用key,测试key:test_api_......
  • 书写高质量JavaScript代码的要义(The Essentials of Writing High Quality JavaScript)
    原文:TheEssentialsofWritingHighQualityJavaScript才华横溢的StoyanStefanov,在他写的由O’Reilly初版的新书《JavaScriptPatterns》(JavaScript模式)中,我想要是为我们的读者贡献其摘要,那会是件很美妙的事情。具体一点就是编写高质量JavaScript的一些要素,例如避免全局变量,使......
  • jenkins 上传文件参数
    注意:文件参数不支持Jenkins流水线文件上传以后会上传至workspace里对应的project下面,但是文件会被重命名为Filelocation(设置路径)输入库的值,如果在jenkins中继续读取该文件,可以在使用内置变量WORKSPACE......
  • js实现上传的pdf文件预览
    js实现pdf文件上传预览功能需求:上传预览功能,支持图片和pdf上传预览,并且是在指定的div里面预览主要使用的是pdfjs库pdfjs可以轻松实现点击打开一个新的页面或一个大的dialog在原页面实现预览,但是不支持(可能是我没找到)在指定的div里面预览这里要实现的是在指定的div......
  • HTTP Proxy Demo 代码示例
    以下是一个简单的HTTPProxyDemo代码,使用Python3编写: ```pythonimportsocket defhandle_request(client_socket):#接收客户端请求request_data=client_socket.recv(1024)print(request_data.decode()) #解析请求,获取目标主机和端口号first_line=reque......