public DataSetUri ResultDataSetUri(string resultId, bool canWrite) { var r = new AzureBlobDataSetUri() { Blob = ResultBlobName(resultId), Container = FetchRequestContainer }; if (isDevelopmentStorage) { r.UseDevelopmentStorage = true; } else { r.AccountName = resultsContainer.ServiceClient.Credentials.AccountName; if (canWrite) { r.AccountKey = storageAccountKey; r.DefaultEndpointsProtocol = EndpointProtocol.https; } else { r.OpenMode = ResourceOpenMode.ReadOnly; } } return(r); }
static void Main(string[] args) { string uri = @"msds:nc?file=\\vienna.mslab.cs.msu.su\ClimateData\air.sig995.2007.nc&openMode=readOnly"; DataSet d = DataSet.Open(uri); string blobUri = @"msds:ab?UseDevelopmentStorage=true&Container=testcontainer&Blob=testblob"; DataSet blobD = /*new AzureBlobDataSet(blobUri);*/ AzureBlobDataSet.ArrangeData(blobUri, d, new SerializableVariableSchema[0]); AzureBlobDataSetUri azureUri = new AzureBlobDataSetUri(blobUri); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureUri.ConnectionString); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); // Retrieve a reference to a container CloudBlobContainer container = blobClient.GetContainerReference(azureUri.Container); CloudPageBlob blob = container.GetPageBlobReference(azureUri.Blob); Int32 schemeSize; using (BinaryReader br = new BinaryReader(blob.OpenRead())) { //schemeSize = br.ReadInt32(); UTF8Encoding utf8 = new UTF8Encoding(); byte[] buffer = new byte[8192]; br.BaseStream.Read(buffer, 0, 8192); string sizeStr = utf8.GetString(buffer); Console.WriteLine(sizeStr); //schemeSize = Int32.Parse(sizeStr); //br.BaseStream.Seek(512, SeekOrigin.Begin); //DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataSetInfo)); //byte[] scheme = new byte[schemeSize]; //br.BaseStream.Read(scheme, 0, schemeSize); //info = (DataSetInfo)serializer.ReadObject(new MemoryStream(scheme)); } //foreach (var i in blobD.Variables) Console.WriteLine(i.Name); Single[] a = (Single[])blobD["lat"].GetData(); blobD["lat"].PutData(a); //foreach (var i in a) Console.WriteLine(i.ToString()); foreach (var i in blobD["lat"].Metadata) { Console.WriteLine(i.Key.ToString() + " = " + i.Value.ToString()); } foreach (var i in blobD.Metadata) { Console.WriteLine(i.Key.ToString() + " = " + i.Value.ToString()); } Console.ReadLine(); }
static void Main(string[] args) { var schema = new SerializableDataSetSchema( new SerializableDimension[] { new SerializableDimension("i", 30000), new SerializableDimension("j", 30000) }, new SerializableVariableSchema[] { new SerializableVariableSchema("vals", typeof(double), new string[] { "i", "j" }, null) }, null ); string BlobConnectionAccountName = @"fetchclimate2"; string BlobConnectionAccountKey = @"vQpyUA7h5QFX6VlEH944gyv/h2Kx//WDy32brNip+YKDpsrN5/pxcSOnP2igQQ5pkA8lRXkmqmAYrgB29nwo/w=="; string uri = @"msds:ab?DefaultEndpointsProtocol=http&Container=testcontainer&Blob=testBlob30000x30000&AccountName=" + BlobConnectionAccountName + @"&AccountKey=" + BlobConnectionAccountKey; try { var ds = AzureBlobDataSet.CreateEmptySet(uri, schema); double[,] data = new double[1, 30000]; for (int i = 0; i < 30000; ++i) { data[0, i] = (double)i; } ds["vals"].PutData(new int[] { 29999, 0 }, data); var recvData = (double[, ])ds["vals"].GetData(new int[] { 29999, 0 }, new int[] { 1, 30000 }); for (int i = 0; i < 30000; ++i) { if (data[0, i] != recvData[0, i]) { throw new Exception("difference at " + i.ToString()); } } Console.WriteLine("Everything is successful!"); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); //delete test blob try { AzureBlobDataSetUri azureUri = null; if (DataSetUri.IsDataSetUri(uri)) { azureUri = new AzureBlobDataSetUri(uri); } else { azureUri = AzureBlobDataSetUri.ToUri(uri); } CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureUri.ConnectionString); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference(azureUri.Container); CloudPageBlob blob = container.GetPageBlobReference(azureUri.Blob); blob.DeleteIfExists(); Console.WriteLine("Deleted test blob successfully!"); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); }