Azure Data Lake(一) 在NET Core 控制台中操作 Data Lake Storage
一,引言
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的更多相关文章
- Azure Service Bus(二)在NET Core 控制台中如何操作 Service Bus Queue
一,引言 上一篇讲到关于 Azure ServiceBus 的一些概念,讲到 Azure Service Bus(服务总线),其实也叫 "云消息服务",是微软在Azure 上提供的 ...
- 在.NET Core控制台中使用依赖注入
本文介绍如何在控制台应用程序中使用微软提供的依赖注入功能,掌握控制台中的用法后,可以扩展到构建windows服务中. 创建控制台应用程序 添加DependencyInjection的引用 Instal ...
- 在控制台中操作MYSQL数据库步骤以及一些小问题
一直用Navicat来对MySQL数据库进行操作,今天突然想试试用DOS控制台来操作,特记录自己第一次使用经历,若有错误之处,还望大佬们指点. 首先打开控制台,win+R键,输入cmd,确定 输入my ...
- Multithreading C++ Out of Core Sotring for Massive Data|多线程C++的大规模数据外部排序
先说一下,这个其实是我为实现PantaRay或者是类似Dreamworks的Out of Core点云GI的技术储备,为大规模点云光线跟踪所准备的第一步.在实际的应用中,int类型会被64bit的ui ...
- .NET CORE 怎么样从控制台中读取输入流
.NET CORE 怎么样从控制台中读取输入流 从Console.ReadList/Read 的源码中,可学习到.NET CORE 是怎么样来读取输入流. 也可以学习到是如何使用P/Invoke来调用 ...
- .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...
- Asp.Net Core 2.0 项目实战(8)Core下缓存操作、序列化操作、JSON操作等Helper集合类
本文目录 1. 前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...
- .NET Core 使用Dapper 操作MySQL
MySQL官方驱动:http://www.cnblogs.com/linezero/p/5806814.html .NET Core 使用Dapper 操作MySQL 数据库, .NET Core 使 ...
- 利用跨域请求来隐藏firbug控制台中的Ajax请求
本文链接:http://www.orlion.ml/63/ 普通jquery的Ajax请求在控制台中是可见的,如下: 而在利用jsonp(json with padding)进行Ajax跨域时,发现A ...
随机推荐
- 学习java 7.19
学习内容: 接口的组成中加入了默认方法,静态方法,私有方法 接口中默认方法:public default 返回值类型 方法名(参数列表){ } public default void show() ...
- [web安全] 利用pearcmd.php从LFI到getshell
有一段时间没写blog了,主要是事多,加上学的有些迷茫,所以内耗比较大.害,沉下心好好学吧. 漏洞利用背景: 允许文件包含,但session等各种文件包含都已经被过滤了.ctf题中可以关注regist ...
- 100个Shell脚本——【脚本2】截取字符串
[脚本2]截取字符串 一.脚本 现有一个字符串如下: http://www.aaa.com/root/123.htm 请根据以下要求截取出字符串中的字符: 1.取出www.aaa.com/root/1 ...
- Linux基础命令---lftp登录ftp服务器
lftp lftp指令可以用来登录远程ftp服务器,这是一个字符界面的文件传输工具. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. ...
- redis入门到精通系列(七):redis高级数据类型详解(BitMaps,HyperLogLog,GEO)
高级数据类型和五种基本数据类型不同,并非新的数据结构.高级数据类型往往是用来解决一些业务场景. (一)BitMaps (1.1) BitMaps概述 在应用场景中,有一些数据只有两个属性,比如是否是学 ...
- 【编程思想】【设计模式】【结构模式Structural】桥梁模式/桥接模式bridge
Python版 https://github.com/faif/python-patterns/blob/master/structural/bridge.py #!/usr/bin/env pyth ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(8. 安装和配置Kubernetes)
1. 概念 1.1. 比较主流的任务编排系统有mesos+marathon,swarm,openshift(红帽内部叫atom服务器)和最著名的kubernetes,居然说yarn也行,不过没见过谁用 ...
- Windows下搭建FFmpeg开发调试环境
背景 如果你是一个FFmpeg的使用者,那么绝大部分情况下只需要在你的程序中引用FFmpeg的libav*相关的头文件,然后在编译阶段链接相关的库即可. 但是如果你想调试FFmpeg内部相关的逻辑,或 ...
- 回溯——51. N皇后
这一题在我刚开始拿到的时候,是一点思路都没有的,只能先分析题目的要求,即queen之间的规则: 不能同行 不能同列 不能同斜线 不能同左斜 不能同右斜 同时发现,在寻找所有可能结果的穷举过程中,传入的 ...
- 度量驱动的DevOps实现
目录 一.简介 二.度量是什么 三.实践 四.QA问答 一.简介 Wiki上讲:DevOps(Development和Operations的组合词)是一种重视"软件开发人员(Dev)&quo ...