bson文件的切分】的更多相关文章

描述 最近遇到问题需要将较大的bson文件(MongoDB导出的二进制json文件)按文档(记录)进行切分,网上这方面的资料实在太少,弄了一天多终于达到了基本要求(还不知道有没有BUG) 代码 package splitbson; import java.io.*; import java.util.Scanner; /** * 每条文档的前四个字节表示该文档的字节数,因此只需要读取4个字节数,计算该文档大小.然后用字节流读取即可. */ public class SplitBsonUtils…
bsondump命令是将BSON格式的文件转换为可读性更强的文件格式,例如转为为JSON 格式的文档,bsondump默认转换为json格式的文档. 当通过mongodump命令进行备份时,如果有参数 --oplog,会在备份路径下产生一个oplog.bson文件. 这个文件是bson格式,没有办法直接查看的,打开乱码, 例如,tail -3 oplog.bson,打开 如下: 所以,我们可以先通bsondump将bson转换为json格式. bsondump添加参数--outFile还可以,将…
Python将mongodb导出的bson文件转为字典对象 安装bson包, sudo pip install bson 示例 # 解决编码问题 import sys reload(sys) sys.setdefaultencoding('utf8') # 导入bson模块 import bson # 通过rb的方式读取文件 bson_file = open('./xunfeng/db/Config.bson', 'rb') # loads接收的是字符串 data = bson.loads(bs…
MongoDB导入bson文件(元数据),mongorestore命令行方式导入 不推荐使用MongoDB Compass等图形化数据库管理软件,例如MongoDB Compass只能导入json和csv格式的文件 推荐使用命令行导入:cmd或terminal方式导入 step 1: 切换到自己电脑的MongoDB安装目录下的bin目录下 step 2: 查看bin目录下是否有需要使用的MongoDB的Tools,例如这时我们需要mongorestore step 3: 没有需要使用的Mongo…
首先需要到mangodb的安装目录的bin下面找到mongorestore.exe WIN10系统MongoDB安装目录bin文件夹下没有mongorestore.exe 先下载工具  https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools 下载完成后解压放到bin目录下. 然后打开cmd使用如下命令: mongorestore.exe --host 127.0.0.1 --port 27017 -d…
使用mongodb自带的命令 bsondump collection.bson > collection.json…
1. 使用mongo命令将数据库删除: mongo命令: use db_name; db.dropDatabase() 2. 导入(指定文件夹)数据: linux命令: mongorestore -d db_name 文件夹目录 windows命令: mongorestore.exe -d db_name 文件夹目录…
有些程序可能不希望文件被切分,而是用一个mapper完整处理每一个输入文件.例如,检查一个文件中所有记录是否有序,一个简单的方法是顺序扫描第一条记录并并比较后一条记录是否比前一条要小.如果将它实现为一个map任务,那么只有一个map操作整个文件时,这个算法才可行. 有二种办法可以保证输入文件不被切分.第一种(最简单但不怎么漂亮的)方法就是增加最小分片大小,将它设置成大于要处理的最大文件大小.把它设置为最大值long.MAX_VALUE即可.每二种方法就是使用FileInputFormat具体子类…
无意翻出以前笔记,切分sql文件,每10万条加一个commit.半天都想不起来应用的场景,能想起来的再加上查的资料记录一下. 在Oracle数据库中,频繁的commit会引起大量Redo Log的物理I/O,会极大的限制数据库的性能.因此,为提高数据库性能,尽可能的批量提交. Could not execute JDBC batch update,最后发现原因是SQL语句长度大于1M,mysql通讯的数据包大小设置是1M,这就造成sql语句执行失败. 把mysql的配置文件(my.ini)中的m…
1.从原文件中随机选出若干行 可以直接用shuf命令就可以完成: $ shuf -n source.txt > target.txt shuf命令的说明: $ shuf --help Usage: shuf [OPTION]... [FILE] or: shuf -e [OPTION]... [ARG]... or: shuf -i LO-HI [OPTION]... Write a random permutation of the input lines to standard output…
转自:http://www.crazyant.net/1423.html Hadoop的MapReduce计算的第一个阶段是InputFormat处理的,先将文件进行切分,然后将每个切分传递给每个Map任务来执行,本文阐述切分个数,也就是Map任务数目的计算方法: Hadoop首先会计算每个切分的大小,然后使用”文件总大小/每个切分的大小“来决定划分的总数,如果不足一个切分的大小,则当做1个: 在org.apache.hadoop.mapred.FileInputFormat中给出了计算每个划分…
一.概述 GridFS是基于mongodb存储引擎是实现的“分布式文件系统”,底层基于mongodb存储机制,和其他本地文件系统相比,它具备大数据存储的多个优点.GridFS适合存储超过16MB的大型文件,不过16M数据在当今互联网时代,已经不足为奇.我们可以使用GridFS构建大规模的“图片服务器”.“文档服务器”.“视频.音频”文件服务器,GridFS对于web应用,可以结合nginx插件“ningx-gridfs”能够简单的实现负载均衡等特性,非常便捷:可以简单认为GridFS是为web应…
在上一篇Log4net(日志文件篇)中,我们使用"log4net.Appender.FileAppender"将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会越来越庞大,进而影响系统的性能.因此,有必要对日志文件按某种条件进行切分,要切分日志文件,我们可以使用"log4net.Appender.RollingFileAppender"输出源,使用该输出源我们可以按照文件大小或者日期对日志文件进行切分,下面我们分别描述之. 一.按文件大小切分日志…
FROM : http://www.2cto.com/os/201503/381812.html 在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或date切割)的日志库,则日志文件会很快增长到G级别.单机操作大文件对后续跟进日志来说非常不方便. 本文介绍如何利用logrotate这个工具来在应用程序外部切分日志. 1. logrotate是什么logrotate是大多数linux系统自带的日志切割工具,在shell终端输入"man logrota…
. 输出命令 echo,cat,管道(|),tee,重定向(>, >>)等 . 创建一个文件:用 touch.echo.cat.tee, 重定向(>, >>)等 [root@admin ~] $ touch test.cc [root@admin ~] $ echo "" > empty.file [root@admin ~] $ ping localhost > ping_local & [root@admin ~] $ pin…
python脚本利用shell命令来实现文本的操作, 这些命令大大减少了我们的代码量. 比如按行切分文件并返回切分后得到的文件列表,可以利用内建的split命令进行切分.为了返回得到的文件列表名,可以先将文件切分到自建的子目录中,然后通过 os.listdir获取所有文件,再将这些文件移到上一级目录(即函数参数指定的新目录),删除自建子目录,最后返回该文件名列表. 代码如下,如发现问题欢迎指正: # 创建新路径 def make_dirs(path): if not os.path.isdir(…
一 前言 看了一下,距离上一篇博客的发表已经过去了4个月,时间过得好快啊.本篇博客是JDFS系列的第三篇博客,JDFS的目的是为了实现一个分布式的文件管理系统,前两篇实现了基本的上传.下载功能,但是那还不能算作分布式文件管理.本篇博客将在前两篇的基础上增加一系列分布式的功能,比如流式云存储,就是客户端把本地的文件切分成若干片后,以冗余的方式存储到分布式数据结点上:所谓的流式传递读者可以在网上搜索一下HDFS的流式传递,基本上就是那个意思,正文中会详细介绍这个,此处不再赘述.除了分布式存储外,当然…
MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片 本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议播放MP4文件,从而避免了对MP4进行点播,尤其是大的MP4文件,需要长时间缓冲MP4头部数据的问题,同时可以解决对MP4文件进行切分,会在服务器制造出大量的文件碎片的不利情况.而且本技术,几乎可以不需要对流媒体服务器(HTTP服务)做修改. 背景 HLS全称Http Live Streaming是…
文件上传在web应用中是比较常见的功能,前段时间做了一个多文件.大文件.多线程文件上传的功能,使用效果还不错,总结分享下. 一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件进行上传: 支持大文件上传(1G),同时需要保证上传期间用户电脑不出现卡死等体验: 交互友好,能够及时反馈上传的进度: 服务端的安全性,不因上传文件功能导致JVM内存溢出影响其他功能使用: 最大限度利用网络上行带宽,提高上传速度: 二. 设计分析 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送.…
问题背景是这样的,我有一批需要处理的文件,对于每一个文件,都需要调用同一个函数进行处理,相当耗时 有没有加速的办法呢?当然有啦,比如说你将这些文件分成若干批,每一个批次都调用自己写的python脚本进行处理,这样同时运行若干个python程序也可以进行加速 但是,有没有更简单的方法呢?比如说,我一个运行的一个程序里面,同时分为多个线程,然后进行处理? 实际上是有的 大概思路是这样,将这些个文件路径的list,分成若干个,至于分成多少,要看自己cpu核心有多少,比如你的cpu有32核的,理论上就可…
Rsync文件同步的核心算法 文章出处:http://coolshell.cn/articles/7425.html#more-7425 rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输.rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像是只对有变更的部分进行传送.rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝.rsync利用由Andrew Tridgell发明的算…
Linux系统的日志文件的切分主要是由logrotate来完成的,以centos7为例配置通常在/etc/logrotate.d 目录下 添加 nginx 文件 cat nginx /var/log/nginx/*.log { daily missingok rotate 52 compress delaycompress notifempty create 640 root root sharedscripts postrotate # [ -f /var/run/nginx.pid ] &&a…
本文由  网易云发布.   作者:范欣欣(本篇文章仅限内部分享,如需转载,请联系网易获取授权.)   Region自动切分是HBase能够拥有良好扩张性的最重要因素之一,也必然是所有分布式系统追求无限扩展性的一副良药.HBase系统中Region自动切分是如何实现的?这里面涉及很多知识点,比如Region切分的触发条件是什么?Region切分的切分点在哪里? 如何切分才能最大的保证Region的可用性?如何做好切分过程中的异常处理?切分过程中要不要将数据移动?等等,这篇文章将会对这些细节进行基本…
MongoDB GridFS GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等). GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中. GridFS 可以更好的存储大于16M的文件. GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中. GridFS 用两个集合来存储一个文件:fs.files与fs.ch…
WiredTiger.wt文件是mongoDB的元数据文件,存储了其他数据库表的元数据信息.笔者最近遇到了WiredTiger.wt文件损坏的情况,MongoDB无法启动,数据库中的重要数据危在旦夕... 一.网上大多数文章的恢复方案 - 使用wt工具对数据进行打捞 由于笔者之前没有接触过MongoDB,对其知之甚少,只能参考网上的文章来试图恢复数据.看了下网上的文章,大多是说通过wt工具来打捞数据.然而wt工具打捞数据,需要WiredTiger.wt文件是完好可用,并不适用于笔者遇到的情形.…
在FileStore下,用户文件经过切分对象块后最终存放在了单机文件系统(xfs .ext4等)中,我们可以较容易地找到这些对象块对应的文件,然后提取这些对象块文件后组装成用户文件.然而,BlueStore是构建在裸盘上的,没有文件之说,我们提取用户文件时就需要知道用户文件的坐落在裸盘的哪些空间(位置+大小:offset + length)上.下面笔者就介绍下笔者是怎么提取BlueStore中的文件的~ 一.需要了解的一些概念 如果笔者理解有误,请留言指正~ 概念 解释 onode 每个对象有个…
在前面一篇文章中(hadoop2.7之作业提交详解(上))中涉及到文件的分片. JobSubmitter.submitJobInternal方法中调用了int maps = writeSplits(job, submitJobDir); //设置map的数量,而map的数量是根据文件的大小和分片的大小,以及文件的数量决定的 接下来我们看一下JobSubmitter.writeSplits方法: private int writeSplits(org.apache.hadoop.mapreduce…
1. GridFS简介 GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频.视频等),但是它是存储在MonoDB的集合中. GridFS 会将文件对象分割成多个的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中. GridFS 用两个集合来存储一个文件:fs.files与fs.chunks. 每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(fil…
文件上传下载过程中经常会遇到网络不稳定,或者传输软件限制传输的文件大小之类的问题.在当今换没有出现很好的软件的时候,一个available方法是将大文件切片,也就是 切成小文件,然后通过其他方法put/get. linux中的切片使用的是splie命令. 常用方法: split -b 200m(小片的大小上限) file_name(要切的文件) file_name_(切分的小片的前缀,后缀是命令自定义的,改不了,一般是[a-z]2结尾)注意:1.不带-b,导致默认只有250K左右的小片大量产生2…
空洞的概念 linux 上普通文件的大小与占用空间是两个概念,前者表示文件中数据的长度,后者表示数据占用的磁盘空间,通常后者大于前者,因为需要一些额外的空间用来记录文件的某些统计信息或附加信息.以及切分为块的数据信息 (通常不会占用太多).文件占用空间也可以小于文件尺寸,此时文件内部就存在空洞了. 所谓空洞其实就是没有分配存储空间的数据块,当访问这些数据块时,系统返回 0,就如同读到空文件一般,当写这些块时,系统再实地分配对应的存储空间.其实这个和内存中的虚址地址与物理地址的概念非常相似--操作…