一,引言

  Azure Data Lake Storage Gen2 是一组专用于大数据分析的功能,基于 Azure Blob Storage 构建的。Data Lake Storage Gen2 包含了 Gen1 和 Blob Storage 的存储功能。但是在实际项目中如何使用,如何读取数据?如何操作数据?我们可以先从官方概念中先了解什么是 Azure Data Lake

以下引用于官方的术语--------------------

Data Lake Storage Gen2 使 Azure 存储成为在 Azure 上构建企业 Data Lake 的基础。 Data Lake Storage Gen2 从一开始就设计为存储数千万亿字节的信息,同时保持数百千兆位的吞吐量,允许你轻松管理大量数据。

Data Lake Storage Gen2 在 Blob 存储的基础上构建,并通过以下方式增强了性能、管理和安全性:

  • 优化了性能,因为你不需要将复制或转换数据作为分析的先决条件。 与 Blob 存储上的平面命名空间相比,分层命名空间极大地提高了目录管理操作的性能,从而提高了整体作业性能。

  • 管理更为容易,因为你可以通过目录和子目录来组织和操作文件。

  • 安全性是可以强制实施的,因为可以在目录或单个文件上定义 POSIX 权限。

巴拉巴拉说了一大堆,我们该如何使用呢,接下来我们就通过实践(代码操作)的方式进一步了解Azure Data Lake

二,正文

1,创建 Azure Data Lake Gen2

Azure Portal 点击 “Create a resource”, 选择 “Storage account",并点击 “Create”

输入以下相关参数

Resource group:“Web_Test_AC_RG”

Storage account name:“cnbatedatalake”

Region:“East Asia”

Performance:“Standard”

Redundancy:“Locally-redundant storage(LRS)”

点击 “Next:Advanced >” 进行下一步操作

是否启用“分层命名空间”,可以在下图圈中的部分进行设置,并点击 “Review + create”

预校验完成后,点击 “Create” 进行创建

2,通过控制台代码操作 Azure Data Lake

2.1 创建新的NET Core 控制台程序,添加 Azure Data Lake Storage 的 Nuget 程序包

也可以使用程序包管理器控制台进行安装

Install-Package Azure.Storage.Files.DataLake -Version 12.8.0

访问 Azure Data Lake 得通过授权,需要安装 “Azure.Identity”

使用程序包管理器进行安装

Install-Package Azure.Identity -Version 1.5.0

代码部分 Program.cs

重点:接下来,需要将之前在Azure上注册的服务主体的 AZURE_CLIENT_ID(应用程序ID)AZURE_CLIENT_SECRET(客户端密码)AZURE_TENANT_ID(租户ID)配置到代码变量中去。

该代码的主要目的在 storage account 的 container(如果没有 "cdl" 容器,则创建) 下创建文件目录 父目录=》"my-directory",子目录=》"my-subdirectory"

 1 class Program
2 {
3 static async Task Main(string[] args)
4 {
5 var accountName = "cnbatedatalake";
6 var clientID = "xxxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxx";
7 var clientSecret = "JJxxxxxxxxxxxxxxbB6gIrxxxxxxxxNnI";
8 var tenantID = "9bda686c-xxxx-xxxxx-xxxxx-xxxx-xxxx";
9
10 var fileSystemName = "cdl";
11
12 DataLakeServiceClient dataLakeServiceClient = null;
13 GetDataLakeServiceClient(ref dataLakeServiceClient, accountName, clientID, clientSecret, tenantID);
14 15 16
17
18 var filedirClient= await CreateDirectory(dataLakeServiceClient, fileSystemName);
19
20 Console.ReadLine();
21 }
22
23 public static async Task<DataLakeDirectoryClient> CreateDirectory
24 (DataLakeServiceClient serviceClient, string fileSystemName)
25 {
26
27 DataLakeFileSystemClient fileSystemClient =
28 serviceClient.GetFileSystemClient(fileSystemName);
29 if (!await fileSystemClient.ExistsAsync())
30 {
31 await serviceClient.CreateFileSystemAsync(fileSystemName);
32 }
33
34 DataLakeDirectoryClient directoryClient =
35 await fileSystemClient.CreateDirectoryAsync("my-directory");
36
37 return await directoryClient.CreateSubDirectoryAsync("my-subdirectory");
38 }
39
40 public static void GetDataLakeServiceClient(ref DataLakeServiceClient dataLakeServiceClient,
41 String accountName, String clientID, string clientSecret, string tenantID)
42 {
43
44 TokenCredential credential = new ClientSecretCredential(tenantID, clientID, clientSecret);
45
46 string dfsUri = "https://" + accountName + ".dfs.core.windows.net/";
47
48 //dataLakeServiceClient = new DataLakeServiceClient(new Uri(dfsUri), credential: new DefaultAzureCredential());
49
50 dataLakeServiceClient = new DataLakeServiceClient(new Uri(dfsUri), credential);
51 }
52 }

接下啦,我们直接运行代码,并在 cnbatedatalake 这个 Azure Data Lake 中查看是否创建容器以及文件目录

父目录 “my-directory”

子目录 “my-subdirectory”

OK,成功。这里我就不在演示文件/文件目录的添加,删除等操作了,稍后我会重新补充一下代码,供大家参考。

*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

三,结尾

  ok,今天所演示的就是通过代码 service principal 的权限创建Azure Data Lake 的容器,然后在该容器中创建文件目录。在实际项目中,我们其实是需要将不同的数据写入到 Azure Data Lake 中。同时也要避免掉把一些重要的机密信息通过硬编码的方式保留在系统中。

作者:Allen

参考链接:Azure Data Lake Storage Gen2 简介

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

Azure Data Lake(一) 在NET Core 控制台中操作 Data Lake Storage的更多相关文章

  1. Azure Service Bus(二)在NET Core 控制台中如何操作 Service Bus Queue

    一,引言 上一篇讲到关于 Azure ServiceBus 的一些概念,讲到 Azure Service Bus(服务总线),其实也叫 "云消息服务",是微软在Azure 上提供的 ...

  2. 在.NET Core控制台中使用依赖注入

    本文介绍如何在控制台应用程序中使用微软提供的依赖注入功能,掌握控制台中的用法后,可以扩展到构建windows服务中. 创建控制台应用程序 添加DependencyInjection的引用 Instal ...

  3. 在控制台中操作MYSQL数据库步骤以及一些小问题

    一直用Navicat来对MySQL数据库进行操作,今天突然想试试用DOS控制台来操作,特记录自己第一次使用经历,若有错误之处,还望大佬们指点. 首先打开控制台,win+R键,输入cmd,确定 输入my ...

  4. Multithreading C++ Out of Core Sotring for Massive Data|多线程C++的大规模数据外部排序

    先说一下,这个其实是我为实现PantaRay或者是类似Dreamworks的Out of Core点云GI的技术储备,为大规模点云光线跟踪所准备的第一步.在实际的应用中,int类型会被64bit的ui ...

  5. .NET CORE 怎么样从控制台中读取输入流

    .NET CORE 怎么样从控制台中读取输入流 从Console.ReadList/Read 的源码中,可学习到.NET CORE 是怎么样来读取输入流. 也可以学习到是如何使用P/Invoke来调用 ...

  6. .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

    目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...

  7. Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类

    本文目录 1.  前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...

  8. .NET Core 使用Dapper 操作MySQL

    MySQL官方驱动:http://www.cnblogs.com/linezero/p/5806814.html .NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使 ...

  9. 利用跨域请求来隐藏firbug控制台中的Ajax请求

    本文链接:http://www.orlion.ml/63/ 普通jquery的Ajax请求在控制台中是可见的,如下: 而在利用jsonp(json with padding)进行Ajax跨域时,发现A ...

随机推荐

  1. ICCV2021 | TOOD:任务对齐的单阶段目标检测

    ​前言  单阶段目标检测通常通过优化目标分类和定位两个子任务来实现,使用具有两个平行分支的头部,这可能会导致两个任务之间的预测出现一定程度的空间错位.本文提出了一种任务对齐的一阶段目标检测(TOOD) ...

  2. nodejs-Path模块

    JavaScript 标准参考教程(alpha) 草稿二:Node.js Path模块 GitHub TOP Path模块 来自<JavaScript 标准参考教程(alpha)>,by ...

  3. 【leetcode】834. Sum of Distances in Tree(图算法)

    There is an undirected connected tree with n nodes labeled from 0 to n - 1 and n - 1 edges. You are ...

  4. linux之wc命令详解

    Linux系统中wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式 wc [options] 文件... 2.命令功能 统计指定文件中的字 ...

  5. NERD_commenter快捷键

    快捷键有点多,记不过来,做个备份 1. \cc 注释当前行和选中行 2. \cn 没有发现和\cc有区别 3. \c<空格> 如果被选区域有部分被注释,则对被选区域执行取消注释操作,其它情 ...

  6. 使用mybatis更新数据时 时间字段的值自动更新

    1.debug打印出来执行的sql语句发现并没有修改时间的字段,最后发现是设计表时勾选了根据当前时间戳更新..... 去掉该字段的根据当前时间戳更新语句: alter table tableName ...

  7. 端口占用,windows下通过命令行查看和关闭端口占用的进程

    1.查找所有端口号对应的PID 端口号:8080 命令:netstat -ano|findstr "8080" 2.找到端口的PID并关闭 PID:1016 命令:taskkill ...

  8. python3.6.4 scrapy框架from PIL import Image报错 from . import _imaging as core

    scrapy框架爬取url下载图片时,用ImagesPipeline下载图片 from PIL import Image报错 from . import _imaging as core Import ...

  9. Android App加固原理与技术历程

    App为什么会被破解入侵 随着黑客技术的普及化平民化,App,这个承载我们移动数字工作和生活的重要工具,不仅是黑客眼中的肥肉,也获得更多网友的关注.百度一下"App破解"就有529 ...

  10. 什么是甘特图(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 名词解释:"甘特图(Gantt Chart)是一种图形化的项目活动及其他相关系统进度情况的水平方向的条状图.&q ...