我正在尝试用Spring批处理将一行csv写入Azure Blob。
自动连接Azure存储:
@Value("${azure.storage.ConnectionString}")
private String connectionString;
@Value("${azure.storage.container.name}")
private String containerName;
@Bean
@StepScope
public FlatFileItemWriter<Pojo> writer(
@Value("#{stepExecutionContext['marketName']}") String marketName,
@Value("#{jobParameters['startDate']}") String startDate,
@Value("#{jobParameters['YYYY-MM']}") String yearMonth
) {
// Create writer instance
FlatFileItemWriter<Pojo> writer = new FlatFileItemWriter<>();
String fullPath = yearMonth + "/" + marketName + "/" +
marketName + "_" + startDate;
BlobContainerClient container = new BlobContainerClientBuilder()
.connectionString(connectionString)
.containerName(containerName)
.buildClient();
BlobClient blob = container.getBlobClient(fullPath);
// Set output file location
writer.setResource((Resource) blob);
// All job repetitions should "append" to same output file
writer.setAppendAllowed(true);
// Name field values sequence based on object properties
writer.setLineAggregator(new DelimitedLineAggregator<Pojo>() {
{
setDelimiter(",");
setFieldExtractor(new BeanWrapperFieldExtractor<Pojo>() {
{
setNames(new String[] {
"market",
"epsg",
"xbin",
"ybin",
"latitude",
"longitude",
"totalDownlinkVol",
"totalUplinkVol"
});
}
});
}
});
return writer;
}
然后我得到错误:
org . spring framework . beans . factory . beancreationexception:创建在类路径资源[com/example/db reader/configuration/batch config . class]中定义的名为“scopedTarget.writer”的bean时出错:通过工厂方法进行的Bean实例化失败;嵌套异常为org . spring framework . beans . bean instantiation exception:无法实例化[org . spring framework . batch . item . file . flat file item Writer]:工厂方法“writer”引发了异常;嵌套异常是Java . lang . classcastexception:com . azure . storage . blob . blob client不能转换为org . spring framework . core . io . resource
Spring抱怨我无法将Blob强制转换为资源。
有没有人知道如何在Spring Batch Writer中指向Azure Blob存储?
谢谢,马库斯。
< code>FlatFileItemWriter需要一个< code > org . spring framework . core . io . resource 来写入数据。如果您使用的API没有实现此接口,则它不能与< code>FlatFileItemWriter一起使用。你需要为Azure提供一个< code>Resource实现,或者寻找一个实现它的库,比如Azure Spring Boot Java Starter Storage client library。
问题内容: 我如何将分数写入文件? 问题答案: 您可以手动打开和关闭文件,但最好使用它,因为它可以为您处理关闭文件。 表示追加到文件中,该文件不会覆盖以前的内容- 这可能是您想要的。据我所知,您将要在print语句之后或之前添加它。如果您不懂读写文件,则应查看此链接。
考虑以下代码: 我唯一发现的是: dump(Object data)方法接受Java对象并生成YAML文档 和 是只有我一个人,还是文档感觉非常神秘和指定?其中一半是关于我甚至从未听说过的特殊应用。我只看着它就觉得自己很傻,这让我有点生气。 不管怎样;如果你能给我任何帮助,我将不胜感激。
问题内容: 我目前正在编写一个使用BufferedWriter生成多个日志文件的应用程序。但是,在调试时,我想写入System.out而不是文件。我认为我可以从以下方面进行更改: 至: 相对于: 但是,新选项无法正常工作。我如何只更改BufferedWriter构造函数内部的对象,以从文件重定向到标准输出。由于我将要写入多个日志文件,因此实际上无法使用System.out并将输出更改为文件。 问题
问题内容: 我想知道如何将以下代码转换为将这些行输出到文本文件,而不是标准输出: 该属性文件是: 谢谢。 问题答案: 将ConsoleAppender更改为FileAppender。 我发现 有用。如果使用此选项,则必须为fileName添加一个属性,并且可能还要设置maxFileSize。这是一个示例(将它们放在log4j.properties文件中): 还有其他附加程序。 根据时间滚动。 不滚
问题内容: 我使用下面的方法来写到: 我想知道这是否是使用NIO的正确方法。我已经阅读了一个方法,该方法带有三个参数: ReadableByteChannel src 好仓 长计 在我的情况下,我只有,而没有and和,有什么方法可以使用此方法来创建文件? 此外,对于Image,还有什么更好的方法可以仅从和NIO 创建映像? 任何信息对我来说都是非常有用的。在SO中也有类似的问题,但是我找不到适合我
我有一个.xlsx文件,其中包含多个包含不同数据的工作表。在所有的工作表中,一个工作表需要容纳接近100,000行数据,并且需要使用带有POI的Java来写入数据。 对于SXSSFWorkbook,这似乎相当快速和简单,在这里我只能在内存中保留100行,但缺点是我只能写入一个新文件(或覆盖现有文件)。 此外,我不允许‘加载’一个现有的文件,即 null null 我可以使用工作簿工厂: null