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

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

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

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

file

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

file

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

小文件上传的实现

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

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

file

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

file

大文件上传的实现

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

file

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

file

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

file file

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

file

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

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

file file

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

file file

《数栈产品白皮书》:https://www.dtstack.com/resources/1004?src=szsm

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm 想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szkyzg

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术qun」,交流最新开源技术信息,qun号码:30537511,项目地址:https://github.com/DTStack

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/3869098/blog/10082697

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。