标签: batch-processing

实现 Spring Batch 进度条 - 获取作业执行的总行数

我有一个批处理作业,它使用从数据库读取HibernateCursorItemReader,使用自定义处理器处理结果,然后提交到另一个数据库。

我想显示的是相对于要处理的总项目数已处理了多少项目。

我尝试实现一个自定义JobExecutionListener,以@beforeJob从第一个表中获取行计数,然后可以Job Execution定期将其与提交进行比较。

有没有比使用监听器更好的方法Job Execution。是否可以在第一次读取时获取表的总行数,在HibernateCursorItemReader初始化期间设置一个值或类似的值?

工作

<batch:job id="SomeLongJob" job-repository="jobRepository" restartable="true">      
    <batch:listeners>
        <batch:listener ref="batchJobExecutionListener" />
    </batch:listeners>  
    <batch:step id="first1">
        <tasklet transaction-manager="hibernateTransactionManager">
            <chunk reader="hibernateItemReader"
                   processor="batchCustomProcessor"
                   writer="hibernateItemWriter"
                   skip-limit="0"
                   commit-interval="10">
            </chunk>
        </tasklet>
    </batch:step>
</batch:job>
Run Code Online (Sandbox Code Playgroud)

读者

<bean id="hibernateItemReader"
    class="org.springframework.batch.item.database.HibernateCursorItemReader">
    <property name="queryString" value="from MyTable" />
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
Run Code Online (Sandbox Code Playgroud)

java spring batch-processing spring-batch progress-bar

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

使用 Slurm 提交 .m 批处理作业后,我可以在不更改原始提交的情况下编辑我的 .m 文件吗?

假设我想在集群上运行一个作业:job1.m

Slurm 处理批处理作业,我正在加载 Mathematica 以保存输出文件 job1.csv

我提交了 job1.m 并且它在队列中。现在,我编辑 job1.m 以获得不同的变量和参数,并告诉它将数据保存到 job1_edited.csv。然后我重新提交job1.m。

现在我有两个批处理作业在队列中。

我的输出文件会怎样?job1.csv 是来自原始 job1.m 文件的数据吗?job1_edited.csv 会是编辑后的文件中的数据吗?还是 job1.csv 和 job1_edited.csv 是相同的输出?

:(

提前致谢!

wolfram-mathematica batch-processing slurm

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

Aerospike 中批处理请求的低性能

我有一个应用程序可以执行很多 batchGets(主要是大约 2000 个键)。这是我使用的代码:

AerospikeClient aerospike = new AerospikeClient("10.0.240.2", port)

public byte[][] getBatch(byte[][] keys) {
    Key[] aeroKeys = new Key[keys.length];
    for (int i = 0; i < keys.length; i++) {
        aeroKeys[i] = new Key(NAMESPACE, setName, keys[i]);
    }
    Record[] records = aerospike.get(batchPolicy, aeroKeys);
    byte[][] response = new byte[keys.length][];

    for (int i = 0; i < keys.length; i++) {
        if (records[i] != null) {
            response[i] = (byte[]) records[i].getValue(DEFAULT_BIN_NAME);
        }
    }
    return response;
}
Run Code Online (Sandbox Code Playgroud)

当我有一个请求时,此代码可以完美且快速地运行。但是当我运行多个并行线程执行 batchGets 时,它非常慢(退化与线程数成线性关系,例如 4 个线程 = 4 倍慢,8 个线程 …

java multithreading batch-processing aerospike

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

批量发送“ENTER”键到正在运行的程序

我有一个“老好人”fortran.exe文件(无法访问代码),我需要使用批处理文件执行数百次。

然而,在 fortran 程序结束时,它打印"Press ENTER to exit",当然会中断批处理文件的执行......

有没有办法将 发送{ENTER}到正在运行的程序?

windows cmd batch-file batch-processing

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

以管理员身份运行bat文件时不生成日志文件

当我以管理员身份运行 bat 文件时,我在生成日志文件 (Export_Files_Logs.log) 时遇到问题。但是当我双击bat文件时。生成日志文件。知道为什么会发生这种情况吗?

FOR %%f IN (D:\batch\outbound\Delta_Sync\Data\Log\*.log) DO type %%f >> Export_Files_Logs.log & echo. >> Export_Files_Logs.log
pause
Run Code Online (Sandbox Code Playgroud)

windows batch-file batch-processing

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

Firestore 多个定时批量提交挂起,没有任何响应

我在尝试定期更新文档集合或尝试写入大量数据时遇到 Firestore 批量提交问题。Firestore 似乎只是冻结并且不会发送响应。在这两种情况下,都会遵守最大批量大小 (500) 和文档大小的建议。例如,使用 cron-jobs,提交会成功运行一段时间,然后完全停止,没有任何错误跟踪。

例如,下面的代码在开始出现错误之前会连续执行 6 次。

public updateCoins = async () =>{
  const markets = await this.getMarkets('usd')
  const maxCount = Math.round(markets.length/this.FB_BATCH_SIZE) + 1
  for(let i=0; i< maxCount; i++){
    const marketBatch = markets.slice(i*this.FB_BATCH_SIZE, (i+1)*this.FB_BATCH_SIZE  > markets.length ? markets.length : (i+1)*this.FB_BATCH_SIZE)
    const batchCoins = this.fbService.db.batch()
    marketBatch.map((entry)=>{
    const coin = this.mapCoin(entry)
      if(coin){
        const coinRef = this.coinsCol.doc(coin.id);
                    batchCoins.set(coinRef,coin,{merge:true})
      }
    }) 
            
    await batchCoins.commit()
    .then(()=>{
      console.log('Commited coins batch update')
    }).catch((_e)=>{
      console.log('Exception saving coins',_e)
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

batch-processing firebase typescript google-cloud-firestore

5
推荐指数
0
解决办法
392
查看次数

AWS Sagemaker 使用镶木地板文件进行批量转换作业?

我正在尝试使用镶木地板数据文件运行批量转换推理作业,但找不到任何内容。到处都说批量转换仅接受文本/csv 或 json 格式类型。出于测试目的,我确实尝试在 AWS 帐户内使用 lambda 函数来调用 parque 数据,但批量转换作业从未成功。出现 ClientError: 400,解析数据时出错。

request = \
        {
            "TransformJobName": batch_job_name,
            "ModelName": model_name,
            "BatchStrategy": "MultiRecord",
            "TransformOutput": {
                "S3OutputPath": batch_output
            },
            "TransformInput": {
                "DataSource": {
                    "S3DataSource": {
                        "S3DataType": "S3Prefix",
                        "S3Uri": batch_input

                    }
                },
                "ContentType": "application/x-parquet", 
                "SplitType": "Line",
                "CompressionType": "None"
            },
            "TransformResources": {
                "InstanceType": "ml.m4.xlarge",
                "InstanceCount": 1
            }
        }
    client.create_transform_job(**request)
    return "Done"
Run Code Online (Sandbox Code Playgroud)

目前,我正在尝试使用 parque 数据文件在本地运行 sagemaker 批量转换作业。我有可以在本地终端中运行以“服务”的 docker 映像,并且可以使用 REST API 服务 Postman 从“localhost:8080/incalls”使用“二进制”输入函数上传 parque 数据文件来调用数据。它工作正常,我可以看到邮递员体内填充的数据。但是,我无法使用 parque 数据进行批量转换。

有没有人成功使用 parquet 文件使用 sagemaker 批量转换进行转换和预测?

transform batch-processing amazon-web-services parquet amazon-sagemaker

5
推荐指数
2
解决办法
6313
查看次数

Spring JPA 批量更新插入很慢(1,000 个实体花了 20 秒)

当我尝试更新插入测试数据(1,000 个实体)时,花了1m 5s。

\n

所以我看了很多文章,然后我把处理时间减少到20秒

\n

但它对我来说仍然很慢,我相信有比我使用的方法更多的好的解决方案。有没有人有好的做法来处理这个问题?

\n

我还想知道哪个部分使它变慢?

\n
    \n
  1. 持久化上下文
  2. \n
  3. 附加选择
  4. \n
\n

谢谢你!

\n
\n

@实体类

\n

该实体类是从用户手机中收集到用户步行步数的健康数据。

\n

PK为userIdrecorded_atrecorded_atPK来自请求数据)

\n
@Getter\n@NoArgsConstructor\n@IdClass(StepId.class)\n@Entity\npublic class StepRecord {\n    @Id\n    @ManyToOne(targetEntity = User.class, fetch = FetchType.LAZY)\n    @JoinColumn(name = "user_id", referencedColumnName = "id", insertable = false, updatable = false)\n    private User user;\n\n    @Id\n    private ZonedDateTime recordedAt;\n\n    @Column\n    private Long count;\n\n    @Builder\n    public StepRecord(User user, ZonedDateTime recordedAt, Long count) {\n        this.user = user;\n …
Run Code Online (Sandbox Code Playgroud)

spring jpa bulkinsert batch-processing

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

通过 Windows 命令行将特定文件编码为 Base64

我需要在Windows操作系统上使用命令行在屏幕上生成特定文件的base64数据(不生成文件)。

我已经看到在Unix系统上足以使用

cat <file_name>| base64
Run Code Online (Sandbox Code Playgroud)

获取编码为 base64 的文件内容。

在 Windows 上我无法得到相同的结果。

我找到了这个解决方案:

certutil -encode -f <file_name> tmp.b64 && findstr /v /c:- tmp.b64 && del tmp.b64
Run Code Online (Sandbox Code Playgroud)

但这需要系统生成一个临时文件,所以最后去销毁它。仅使用该certutil命令,屏幕上的结果就会被包含不相关信息的 3 行所污染。

有人可以帮我在 Windows 上提供一个仅生成 base64 数据的命令吗?

更新:我通过这个新版本的命令改进了屏幕上的结果:

certutil -encode -f <file_name> tmp.b64 && cls && findstr /v /c:- tmp.b64 && del tmp.b64
Run Code Online (Sandbox Code Playgroud)

结果更像是我的要求,但我想避免tmp.b64每次都创建临时文件。

windows base64 command-line batch-processing tobase64string

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

如何快速关闭VS Code中所有打开的终端?

如何快速关闭VS Code中所有打开的终端?

我有很多打开的终端,我可以一一检查它们并分别杀死它们。或者我可以选择其中的一些,然后杀死选定的批次。但这两种方法都不方便,因为它们需要大量时间。我至少有 10000 个开放终端,而在一批中我可以选择几百个。

有没有办法一次性杀死所有终端?

在此输入图像描述

terminal kill batch-processing visual-studio-code

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