I am trying to decode files after downloading via Azure Storage SDK for Java.
Here is my code:
try
{
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
CloudBlobContainer container = blobClient.getContainerReference("mycontainer");
CloudBlobDirectory blobDirectory = container.getDirectoryReference("shi");
for (ListBlobItem blobItem : blobDirectory.listBlobs()) {
if (blobItem instanceof CloudBlob) {
CloudBlob blob = (CloudBlob) blobItem;
blob.download(new FileOutputStream("/Users/shi/Downloads/" + blob.getName()));
}
}
}
This code downloads all the BLOB files from mycontainer but there are encoded. How can I download them but in decoded form.
I solved it:
public static int convertAvro(String avroFile) throws Exception {
PrintStream out = new PrintStream(System.out);
GenericDatumReader<Object> reader=new GenericDatumReader<Object>();
org.apache.avro.file.FileReader<Object> fileReader= DataFileReader.openReader(new File(avroFile),reader);
try {
Schema schema=fileReader.getSchema();
// System.out.print(schema);
DatumWriter<Object> writer=new GenericDatumWriter<Object>(schema);
JsonEncoder encoder=EncoderFactory.get().jsonEncoder(schema,out);
for (Object datum : fileReader) writer.write(datum,encoder);
encoder.flush();
out.println();
out.flush();
}
finally {
fileReader.close();
}
return 0;
}