azure - 在 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);