《Windows Azure Platform 系列文章目录》
Azure SQL Data Warehouse已经改名为Azure SQL Synapse,这里继续挖个坑。
本章我们介绍如何通过Polybase,把Parquet数据导入到SQL Synapse。
什么是Polybase?
借助 PolyBase,SQL Synapse 实例可处理从 Hadoop 中读取数据的 Transact-SQL 查询。 同一查询还可以访问 SQL Synapse 中的关系表。 借助 PolyBase,同一查询还可以联接 Hadoop 和 SQL Server 中的数据。
通过Polybase,SQL Synapse支持数据源保存在Azure Storage中的数据。
1.我们首先准备一个Parquet数据。可以在这里下载:
我是通过.NET Core来实现的。具体可以参考:Apache Parquet for .Net Platform,https://github.com/elastacloud/parquet-dotnet
具体的sample:
static void WriteParquetFile() { var idColumn = new DataColumn( new DataField<Int64>("id"), new Int64[] { 111111111111, 222222222222 }); var nameColumn = new DataColumn( new DataField<string>("name"), new string[] { "Zhang SAn", "Wang Er" }); var ageColumn = new DataColumn( new DataField<int>("age"), new int[] { 30, 36 }); var schema = new Schema(idColumn.Field, nameColumn.Field, ageColumn.Field); using (Stream fileStream = System.IO.File.OpenWrite(@"D:\sample.parquet")) { using (var parquetWriter = new ParquetWriter(schema, fileStream)) { // create a new row group in the file using (ParquetRowGroupWriter groupWriter = parquetWriter.CreateRowGroup()) { groupWriter.WriteColumn(idColumn); groupWriter.WriteColumn(nameColumn); groupWriter.WriteColumn(ageColumn); } } } }
2.使用工具PARQ查看其schema中字段类型。如下图:
3.在Azure China创建1个存储账户,创建1个container,把上面的sample.parquet文件,上传到Azure Storage。步骤略
4.在Azure China创建SQL Synapse
5.通过SQL Server Management Studio,链接到Azure SQL Synapse
6.在SSMS中,执行下面的脚本:
--创建External PARQUET文件格式 CREATE EXTERNAL FILE FORMAT [ParquetFileSnappy] WITH ( FORMAT_TYPE = PARQUET, DATA_COMPRESSION = N'org.apache.hadoop.io.compress.SnappyCodec' ) GO --下面的password的秘钥内容,可以根据需要修改PASSWORD值 CREATE MASTER KEY ENCRYPTION BY PASSWORD = '23987hxJ#KL95234nl0zBe'; --identity是存储账号名称 --Secret是存储账户的秘钥 CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential01 WITH IDENTITY = '[你的存储账户名称]' ,SECRET = '[你的存储账户秘钥]' ; --下面的wasbs后面是containername@storage account name CREATE EXTERNAL DATA SOURCE [AzureBlobStorageHadoop] WITH ( TYPE = HADOOP, LOCATION = N'wasbs://[Blob container名称]@[你的存储账户名称].blob.core.chinacloudapi.cn', CREDENTIAL = AzureStorageCredential01 -- created earlier ) GO --创建新的TABLE,导入的文件名是Azure Blob的文件名,记住Location后面一定要有斜杠(/) --字段类型根据Parquet的字段类型决定 CREATE EXTERNAL TABLE dbo.employee( id BIGINT NULL, name nvarchar(50) NULL, age int NULL ) WITH ( LOCATION='/sample.parquet', DATA_SOURCE=AzureBlobStorageHadoop, FILE_FORMAT=ParquetFileSnappy );
7.执行成功后,我们可以查看到创建成功的外部表。
8.最后,我们可以通过T-SQL语句,查看到该外部表中的内容。
9.可以看到,通过Polybase方式,可以非常方便的查看到Azure Storage中的Parquet数据。
10.最后需要强调一下,通过Polybase的方式,访问数据其实还是在Azure Blob Storage中,需要需要加快访问速度,还是希望通过CTAS (Create Table as Select),把数据从SQL External Table加载到SQL DW里。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2012-08-05 [New Portal]Windows Azure Web Site (2) 使用Windows Azure Management Portal创建Web Site (下)