标签: batch-processing

无论如何,我都无法在Hibernate中批量处理MySQL INSERT语句

我目前正面临众所周知和常见的Hibernate插入批处理问题.

我需要保存500万行的批次.我首先尝试使用更轻的有效载荷.由于我必须只插入两种类型的实体(首先是所有类型A的记录,然后是所有类型B的记录,都指向公共类型C ManyToOne父级),我想从JDBC批量插入中获取最大优势.

我已经阅读了很多文档,但我没有尝试过.

  • 我知道为了使用批量插入,我不能使用实体生成器.所以我删除了AUTO_INCREMENTID,我用一个技巧设置了ID:SELECT MAX(ID) FROM ENTITIES每次都增加.
  • 我知道我必须定期清理会议.我将提前发布代码,但无论如何我每500个元素执行一次事务.
  • 我知道我必须设置hibernate.jdbc.batch_size与我的应用程序的批量大小一致,所以我在LocalSessionFactoryBean(Spring ORM集成)中设置它
  • 我知道我必须在连接URL中重写批量语句.

这是我的实体

共同的父实体.这将首先插入到单个事务中.我不关心这里的自动增量列.每批作业只有一个记录

@Entity
@Table(...)
@SequenceGenerator(...)
public class Deal
{

    @Id
    @Column(
            name = "DEAL_ID",
            nullable = false)
    @GeneratedValue(
            strategy = GenerationType.AUTO)
    protected Long id;

    ................
}
Run Code Online (Sandbox Code Playgroud)

其中一个孩子(假设每批2.5M记录)

@Entity
@Table(
        name = "TA_LOANS")
public class Loan
{

    @Id
    @Column(
            name = "LOAN_ID",
            nullable = false)
    protected Long id;

    @ManyToOne(
            optional = false, …
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate jdbc batch-processing

18
推荐指数
1
解决办法
6310
查看次数

PDF的批量OCR程序

以前曾经问过,但我真的不知道这些答案对我有帮助.这是我的问题:我得到了一堆(10,000左右)pdf文件.有些是使用adobe的打印功能保存的文本文件(所以他们的文本是完美的,我不想冒险搞砸它们).有些是扫描图像(所以他们没有任何文字,我将不得不接受OCR).文件在同一目录中,我无法分辨哪个是哪个.最终我想将它们转换为.txt文件,然后对它们进行字符串处理.所以我希望最准确的OCR成为可能.

似乎有人建议:

  1. adobe pdf(我没有这样的许可副本......加上如果ABBYY finereader或更好的东西,如果我不使用它,为什么要付费)
  2. ocropus(我无法弄清楚如何使用这个东西),
  3. Tesseract(看起来好像它在1995年很棒,但我不确定是否有更准确的东西加上它本身不做pdf而且我必须转换为TIFF.这引起了我自己的问题,因为我没有一个acrobat的许可副本,所以我不知道如何将10,000个文件转换为tiff.另外我不希望将10,000个30页文档转换为30,000个单独的tiff图像).
  4. wowocr
  5. pdftextstream(来自2009年)
  6. ABBYY FineReader(显然它的'$$$,但如果这个东西明显更好,我会花600美元来完成这个,即有更准确的ocr).

我也是编程的n00b所以如果要花几周的时间来学习如何做,我宁愿支付$$$.感谢输入/体验.

顺便说一下,我正在运行Linux Mint 11 64位和/或Windows 7 64位.

以下是其他主题:

批量OCRing尚未进行OCR的PDF

开源OCR

使用OCR的PDF文本提取方法

https://superuser.com/questions/107678/batch-ocr-for-many-pdf-files-not-already-ocred

pdf ocr batch-processing

17
推荐指数
2
解决办法
2万
查看次数

使用StatelessSession进行批处理

文档

如果我们有一个需要插入1000 000行/对象的情况:

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

for ( int i=0; i<100000; i++ ) {
    Customer customer = new Customer(.....);
    session.save(customer);
    if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
    }
}

tx.commit();
session.close();
Run Code Online (Sandbox Code Playgroud)

为什么我们应该使用这种方法?与StatelessSession相比,它给我们带来了什么样的好处:

    StatelessSession session = sessionFactory.openStatelessSession();
    Transaction tx = session.beginTransaction();

    for ( int i=0; i<100000; i++ ) {
      Customer customer = new Customer(.....);
      session.insert(customer);
    } …
Run Code Online (Sandbox Code Playgroud)

hibernate batch-processing

17
推荐指数
1
解决办法
3万
查看次数

slurm:使用nodelist中的任何节点

我有几千个工作要在一个有16个节点的slurm集群上运行.这些作业应仅在大小为7的可用节点的子集上运行.某些任务是并行化的,因此使用单个节点的所有CPU功率,而其他任务是单线程的.因此,多个作业应该在单个节点上同时运行.任何任务都不应该在多个节点上产生.

目前我提交的每个职位都包括:

sbatch --nodelist=myCluster[10-16] myScript.sh
Run Code Online (Sandbox Code Playgroud)

但是这个参数让slurm等到提交的作业终止,因此完全不使用3个节点,并且根据任务(多线程或单线程),当前活动节点在CPU能力方面也可能处于低负载状态.

sbatch在指定节点上同时运行多个作业的强制slurm 的最佳参数是什么?

cluster-computing batch-processing slurm sbatch

17
推荐指数
1
解决办法
2万
查看次数

如何用ANT重命名n个文件?(批量工作)

如何用ANT重命名1..n文件?我想与重命名的文件xxxx.default.propertiesxxxx.local.properties.

谢谢.

java ant batch-processing

16
推荐指数
1
解决办法
1万
查看次数

在Entity Framework 4.0中批处理DB命令

我目前的项目需要与外部系统进行日常同步.同步基于复杂的导入文件结构,该结构使用广泛的业务逻辑进行解析和处理.由于业务逻辑,我们决定在.NET代码中实现这一点,并重用现有的BL组件,而不是在存储过程或集成服务中编写相同的逻辑.

BL层位于EF 4.0数据访问层的顶部.当前实现过程导入批处理,将所有更改填入ObjectContext并在事务中执行SaveChanges.当我检查SQL分析器时,我看到EF将每个实体更改作为单个SQL命令执行(具有自己的往返DB的往返).此外,看起来这些命令是完全顺序执行的.所以我有多达100.000往返数据库进行初始导入,以及10.000 - 50.000往返数据库进行日常同步.

是否可以通过EF本身或某些提供商/扩展程序以某种方式批量插入/更新/删除命令?

.net entity-framework batch-processing entity-framework-4

15
推荐指数
1
解决办法
6104
查看次数

在R中打印与回声

我正在使用Rscript运行批处理.我想将消息打印到屏幕上就像bash中的"echo"一样.所以我使用"打印"功能.

问题是打印输出没有进入屏幕.它转到日志文件.有谁知道R中的echo相当于什么?

r echo batch-processing rscript

15
推荐指数
1
解决办法
2万
查看次数

运行计划任务执行批处理文件时保持命令行窗口打开

我想在运行执行批处理文件的计划任务时保持控制台窗口保持打开状态.如果我手动运行意味着执行批处理文件,窗口保持打开状态,但是通过任务调度程序它不会打开,但我可以看到任务仍在运行.我最后暂停了一下.

 @echo off 
 TITLE PROCESS_MGR
 tasklist /FI "IMAGENAME eq JOESMO.exe" | find /I "JOESMO.exe">nul &&(echo PROCESS 
 JOESMO.exe IS ALREADY RUNNING! 
 echo %DATE%
 echo %TIME%
 pause
 ) || (
 echo JOESMO PROCESS IS NOT RUNNING 
 cmd /c start "JOESMO.exe" "C:\Users\xxxx\Documents\
 Visual Studio 2010\Projects\Projects2013\JOESMO.exe"
 pause)
Run Code Online (Sandbox Code Playgroud)

我发现这个建议cmd/k myscript.bat但是在Windows Server 2008的任务调度程序中创建任务我不知道在哪里应用它.我将/ k添加到任务中编辑操作中的添加参数框.

scheduled-tasks batch-processing windows-console

14
推荐指数
1
解决办法
5万
查看次数

Spring Batch:用于高容量和低延迟的ItemReader实现

使用案例:从数据库中读取1000万行[10列]并写入文件(csv格式).

  1. 将建议JdbcCursorItemReaderJdbcPagingItemReader中的哪个ItemReader实现?那是什么原因?

  2. 在上述用例中哪个表现更好(快)?

  3. 在单流程与多流程方法的情况下,选择会有所不同吗?

  4. 在使用TaskExecutor的多线程方法的情况下,哪一个会更好和简单?

spring jdbc batch-processing spring-batch

14
推荐指数
2
解决办法
1万
查看次数

在实践中(非理论),小批量与实时流之间有什么区别?

在实践中(非理论),小批量与实时流之间有什么区别?从理论上讲,我理解迷你批量是在给定的时间范围内批量生成的,而实时流式更像是在数据到达时做某事但是我最大的问题是为什么不使用epsilon时间框架(比如说一毫秒)或我想了解为什么一个人比其他人更有效的解决方案?

我最近遇到了一个例子,其中迷你批处理(Apache Spark)用于欺诈检测,实时流(Apache Flink)用于欺诈预防.有人还评论说小批量不是防止欺诈的有效解决方案(因为目标是防止交易发生)现在我想知道为什么这对迷你批次(Spark)不会那么有效?为什么以1毫秒的延迟运行迷你批处理无效?批处理是一种在任何地方使用的技术,包括操作系统和内核TCP/IP堆栈,其中磁盘或网络的数据确实被缓冲,那么说一个比其他更有效的令人信服的因素是什么?

data-processing stream-processing batch-processing apache-spark apache-flink

13
推荐指数
3
解决办法
5398
查看次数