2017-06-22 6 views
0

Ich versuche, neue Ordner in meinem datalake store zu erstellen, gibt es keinen Fehler im Code, aber nichts wird in datalake store widergespiegelt.Azure Data Lake Store erstellen Ordner über C# -Skript

Code:

using System; 
using System.Collections.Generic; 

using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using System.Threading; 

using Microsoft.Azure.Management.DataLake.Store; 
using Microsoft.Azure.Management.DataLake.Store.Models; 
using Microsoft.Rest.Azure.Authentication; 
namespace test_dlstore 
{ 
    class Program 
    { 
     private static DataLakeStoreAccountManagementClient _adlsClient; 
     private static DataLakeStoreFileSystemManagementClient _adlsFileSystemClient; 

     private static string _adlsAccountName; 
     private static string _subId; 
     private static void Main(string[] args) 
     { 
      _adlsAccountName = "[email protected]"; 

      _subId = "2342342-97ce-a54b2-ba6e-234234234234234"; 

      string localFolderPath = @"C:\myfolder\"; // TODO: Make sure this exists and can be overwritten. 
      string localFilePath = Path.Combine(localFolderPath, "try.txt"); 
      string remoteFolderPath = "adl://mystore.azuredatalakestore.net/myfolder"; 
      string remoteFilePath = Path.Combine(remoteFolderPath, "try.txt"); 

      SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); 
      var tenant_id = "my-tenant-id"; 
      var nativeClientApp_clientId = "1950a258-227b-4e31-a9cf-717495945fc2"; 


      var activeDirectoryClientSettings = ActiveDirectoryClientSettings.UsePromptOnly(nativeClientApp_clientId, new Uri("urn:ietf:wg:oauth:2.0:oob")); 
      var creds = UserTokenProvider.LoginWithPromptAsync(tenant_id, activeDirectoryClientSettings).Result; 

      _adlsClient = new DataLakeStoreAccountManagementClient(creds) { SubscriptionId = _subId }; 
      _adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds); 
      Console.WriteLine(ListAdlStoreAccounts()); 
      Console.WriteLine(AppendToFile("adl://mystore.azuredatalakestore.net/myfolder/stage/testfile.txt", "abcdefghijklmnopqrstuvwxyz")); 
      CreateDirectory("adl://mystore.azuredatalakestore.net/myfolder/newdir"); 

      Console.ReadLine(); 

     } 
     // Append to file 
     public static string AppendToFile(string path, string content) 
     { 
      using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(content))) 
      { 
       Console.WriteLine(_adlsAccountName, path, content); 
       Console.WriteLine(path); 
       Console.WriteLine(content); 
       _adlsFileSystemClient.FileSystem.AppendAsync(_adlsAccountName, path, stream); 
       return "Tried"; 
      } 
     } 
     public static string CreateDirectory(string path) 
     { 
      _adlsFileSystemClient.FileSystem.MkdirsAsync(_adlsAccountName, path); 
      return "Tried Creating directory."; 
     } 
} 
} 

Nach der Ausführung des oben genannten Code verlässt Programm ohne Fehler. Die Verbindung wird hergestellt.

Auch es zeigt datalake Geschäfte, die vorhanden sind, aber nicht in der Lage, etwas über die Data Lake Geschäfte zu tun.

Ich bin neu in Azure bitte hilf mir.

+0

Wenn Sie nur Ordner erstellen versuchen, bitte versuchen '_adlsFileSystemClient.FileSystem.Mkdirs zu verwenden (_adlsAccountName "/ folder")'; –

+0

@ TomSun-MSFT versuchte es. aber ** keine Änderungen ** in meinem Datalake Store. – Shubham

+0

Bitte versuchen Sie es einfach mit dem Code, den ich erwähnt habe, ohne anderen Code. Bitte verwenden Sie relativen Pfad nicht vollständigen Pfad. Ich habe es auf meiner Seite getestet, es funktioniert einwandfrei. –

Antwort

0

Ich mache einen Demo-Test auf meiner Seite, es funktioniert auf der Seite korrekt. Hier finden Sie mein Detail vor:

Zubereitung:

Registry eine AD-Anwendung und assign Rolle applcation, mehr Details bitte zu Azure official tutorials beziehen. Danach können wir mandantId, appId, secretKey aus dem Azure-Portal erhalten.

Schritte:

1.Erstellen eine C# Konsolenprojekt

2.Referece das Microsoft.Azure.Management.DataLake.Store SDK, weitere Details entnehmen Sie bitte Datei Abschnitt packages.config.

3.Add der Code folgen

var applicationId = "appid"; 
var secretKey = "secretkey"; 
var tenantId = "tenantid"; 
var adlsAccountName = "adlsAccount Name"; 
var creds = ApplicationTokenProvider.LoginSilentAsync(tenantId, applicationId, secretKey).Result; 
var adlsFileSystemClient = new DataLakeStoreFileSystemManagementClient(creds,clientTimeoutInMinutes:60); 
adlsFileSystemClient.FileSystem.Mkdirs(adlsAccountName, "/tomtest/newfolder"); 

4.Run der Testcode

enter image description here

5.Check vom azur Portal.

enter image description here

Packages.config

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.Azure.Management.DataLake.Store" version="2.2.0" targetFramework="net452" /> 
    <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="3.13.8" targetFramework="net452" /> 
    <package id="Microsoft.Rest.ClientRuntime" version="2.3.8" targetFramework="net452" /> 
    <package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.7" targetFramework="net452" /> 
    <package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.2.0-preview" targetFramework="net452" /> 
    <package id="Newtonsoft.Json" version="9.0.2-beta1" targetFramework="net452" /> 
</packages> 
+0

Danke. Das hat funktioniert. Ich hatte dieses Problem seit gestern fest. – Shubham

Verwandte Themen