首页 > 解决方案 > 在 Azure 存储数据湖中保存 JSON 文件以 NUL (Ascii 0) 字符和空格结束

问题描述

我们正在从 Java 应用程序在 Azure Data Lake Gen2 中创建 json 文件。文件写入成功,但内容使用一行 NUL (Ascii 0) 字符编码。这是间歇性发生的

代码片段:

DataLakeServiceClientBuilder builder = new DataLakeServiceClientBuilder();
builder.credential(...);
builder.endpoint(...);

DataLakeServiceClient dataLakeServiceClient = builder.buildClient();
DataLakeFileSystemClient fileSystemClient = dataLakeServiceClient.getFileSystemClient(<fileSystemName>);

DataLakeDirectoryClient directoryClient = fileSystemClient.getDirectoryClient(<directoryName>)
                    .getSubdirectoryClient(<subDirectoryName>).getSubdirectoryClient(<subDirectoryName>);

DataLakeFileClient fileClient = directoryClient.createFile("data_lake_file.json");

File file = new File("local_file.json");

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.writerWithDefaultPrettyPrinter().writeValue(file, <java object>);

InputStream targetStream = new FileInputStream(file);
String datalakePath = fileClient.getFilePath();
long fileSize = file.length();
fileClient.append(targetStream, 0, fileSize);
fileClient.flush(fileSize);

标签: azurespring-bootazure-data-lakejackson-databindazure-data-lake-gen2

解决方案


推荐阅读