经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » LESS » 查看文章
Azure Synapse Analytics Serverless
来源:cnblogs  作者:覆周  时间:2021/3/1 8:41:15  对本文有异议

数据湖仓

自从Databricks提出Lakehouse后,同时Snowflake的上市,湖仓一体成为数据领域最火热的话题。

https://databricks.com/blog/2020/01/30/what-is-a-data-lakehouse.html

核心的理念是Delta Lake使Hadoop有了ACID事务能力,使用Spark内存做实时,批,AI计算层。

这样就可以用分布式文件存储颠覆关系数据库存储。

数据仓库

数仓一直有3种类型,概念上和物理上:

一体机

Oracle Exadata,Teradata

价格,软硬件无法解耦

MPP

Greenplum

数据分片始终会遇到数据倾斜问题

数据库

Oracle,SQL Server

100T以下容量数仓,使用列存储索引

 

//Snowflake是介于一体机和MPP之间的一种

//Hive没有事务,不支持update

 

 数仓&BI架构

 

https://docs.microsoft.com/en-us/power-bi/guidance/center-of-excellence-business-intelligence-solution-architecture

 

数据湖仓定义

数据湖仓库可以分解为两种类型的架构:

第一种是数据湖(以使用读取存储模式的形式),称之为NOEDW,

第二种数据湖和关系数据库(以企业数据仓库或 EDW 的形式),将称之为ProEDW

对于 NoEDW,我的思维过程是,如果您试图使数据湖像关系数据库一样工作,为什么不只使用关系数据库呢?然后让数据湖做它擅长的事情, 关系数据库做它擅长的事情?

将关系数据库纳入数据湖仓的额外成本、复杂性和价值时间是值得的,原因有很多,其中之一是关系数据库将元数据与数据相结合,与在许多情况下元数据与数据分离的数据湖相比,自助 BI 更容易。当您处理来自许多不同来源的数据时,这种情况变得更加明显。

https://www.jamesserra.com/archive/2021/01/data-lakehouse-defined/

这篇blog很好的解析了数据湖仓概念。

很多家厂商在提湖仓一体的产品,主要是4种开源组合:

  • Hadoop(Hudi)-存储
  • Presto做虚拟连接-联邦查询
  • Spark内存计算-ETL
  • PostgreSQL MPP-数据集市

 

Azure Synapse Analytics Serverless

目前最成熟的商业产品就是Azure Synapse Analytics

  • MPP数仓和无服务器SQL
  • 用于大数据的Databricks/Spark
  • Low/No Code的ETL/ELT数据编排
  • 一站式Web开发环境
  • 与 Power BI、CosmosDB 和 AzureML等深度集成

功能有很多就不展开介绍了,这次只谈Azure Synapse Analytics Serverless,核心有2点:

  • 用户界面就是SQL Server
  • 使用T-SQL查询对象存储文件

 

 

 

 https://docs.microsoft.com/zh-cn/azure/synapse-analytics/sql/on-demand-workspace-overview

另外支持Azure Cosmos DB做HTAP

https://docs.microsoft.com/zh-cn/azure/cosmos-db/synapse-link

 

 

PPT

 

使用场景

  • 数据湖探索 - 快速探索 Data Lake 中各种格式(Parquet、CSV、JSON)的数据。
  • 逻辑数据仓库 – 基于原始数据提供关系抽象,而无需重新转换数据。
  • 数据转换 - 使用 T-SQL 以简单、可缩放且高效的方式转换 Data Lake 中的数据,以便可将数据推送到 BI 和其他工具,存储到关系数据库。

用户角色

  • 数据工程师:   转换和准备数据,简化ETL/ELT数据集成管道
  • 数据科学家:   快速使用数据湖的内容做AI和机器学习
  • 数据分析师:   使用熟悉的 T-SQL,Spark查询和分析数据
  • BI专业人员: 快速基于数据湖中的数据创建 Power BI报表

用法

查询外部文件

Azure Data Lake在对象存储的基础上增加了文件层级目录结构,面向大数据分析优化。

https://docs.microsoft.com/zh-cn/azure/synapse-analytics/sql/query-data-storage

视图

 

外表

 

查询结果导出

 

复杂查询

  1. /*分页查询*/
  2. select countries_and_territories, year, month, day, cases
  3. from openrowset(
  4. bulk 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/ecdc_cases/latest/ecdc_cases.parquet',
  5. format = 'parquet') as rows
  6. order by year, month, day
  7. OFFSET 30 ROWS
  8. FETCH NEXT 10 ROWS ONLY;
  9. /*字符组合*/
  10. select top 10 geo_id, year, month, cases = '{' + string_agg(concat('"',day,'":',cases), ',')
  11. within group (order by day asc) + '}'
  12. from openrowset(
  13. bulk 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/ecdc_cases/latest/ecdc_cases.parquet',
  14. format = 'parquet') as rows
  15. group by geo_id, year, month;
  16. /*透视*/
  17. with cases as (
  18. select countries_and_territories, year, month, day, cases
  19. from openrowset(
  20. bulk 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/ecdc_cases/latest/ecdc_cases.parquet',
  21. format = 'parquet') as rows
  22. )
  23. select top 10 *
  24. from cases
  25. PIVOT (
  26. SUM (cases) FOR day IN ( [1], [2], [3], [4], [5], [6], [7])
  27. ) AS months
  28. /*逆透视*/
  29. with cases as (
  30. select countries_and_territories, year, month, day, cases, deaths
  31. from openrowset(
  32. bulk 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/ecdc_cases/latest/ecdc_cases.parquet',
  33. format = 'parquet') as rows
  34. where continent_exp = 'Europe'
  35. and year = 2020
  36. )
  37. select top 100 countries_and_territories, year, month, day, property, value
  38. from cases
  39. UNPIVOT (
  40. value FOR property IN ( [cases], [deaths] )
  41. ) AS unpivoted
  42. /*会话上下文*/
  43. CREATE OR ALTER VIEW cases
  44. AS SELECT * FROM openrowset(
  45. bulk 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/ecdc_cases/latest/ecdc_cases.parquet',
  46. format = 'parquet') as rows
  47. WHERE continent_exp = CAST(SESSION_CONTEXT(N'continent') AS VARCHAR(8000))
  48. exec sp_set_session_context 'continent', 'Europe';
  49. SELECT TOP 10 * FROM cases

https://techcommunity.microsoft.com/t5/blogs/blogarticleprintpage/blog-id/AzureSynapseAnalyticsBlog/article-id/175

缺点

不支持缓存,不支持查询Azure SQL/PostgreSQL/SQL DW

//估计今年会支持这2大特性

 

Power BI组合

由于是按查询量计费,目前版本没有缓存,不适合高频查询。将数据全加载在Power BI内存模型,Power BI访问是按用户计费,可以无限查询访问,刚好解决此问题,定时刷新报告即可。还可利用Power BI的聚合表,复合模型特性功能。

聚合表

https://docs.microsoft.com/zh-cn/power-bi/transform-model/desktop-aggregations

复合模型

https://docs.microsoft.com/zh-cn/power-bi/connect-data/desktop-directquery-datasets-azure-analysis-services

 Power BI本身可以直接查询Azure Data Lake,不需要通过Azure Synapse Analytics Serverless,两者的比较可以查看相关文章。

  • 推荐使用Parquet,支持下压
  • 直接查询Serverless没有速度优势
  • 在有转换逻辑下有query folding情况下Serverless会更快

https://blog.crossjoin.co.uk/2021/01/24/comparing-the-performance-of-importing-data-into-power-bi-from-adlsgen2-direct-and-via-azure-synapse-analytics-serverless/

https://blog.crossjoin.co.uk/2021/01/31/comparing-the-performance-of-importing-data-into-power-bi-from-adlsgen2-direct-and-via-azure-synapse-analytics-serverless-part-2-transformations/

https://datamonkeysite.com/2021/01/07/pushdown-filters-in-synapse-serverless-from-powerbi/

另外Power BI已支持Parquet文件。

 

SSAS组合

SSAS模型中表的不同分区可以是不同数据源,做冷热分离。

 

Azure SQL组合

有许多情况下,您可能需要从 Azure SQL 数据库访问放置在 Azure 数据湖上的外部数据,但Azure SQL目前不支持Polybase虚拟化查询外表(SQL Server可以)。可以通过Synapse Analytics Serverless间接实现。

 

  1. /*Synapse中创建外表*/
  2. CREATE EXTERNAL TABLE csv.YellowTaxi (
  3. pickup_datetime DATETIME2, dropoff_datetime DATETIME2, passenger_count INT, ...
  4. ) WITH ( data_source= MyAdls, location = '/**/*.parquet', file_format = ParquetFormat);
  5.  
  6. /*Azure SQL中建外部数据源*/
  7. CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'put some strong password here';
  8. GO
  9. CREATE DATABASE SCOPED CREDENTIAL SynapseSqlCredential
  10. WITH IDENTITY = '<synapse sql username>', SECRET = '<synapse sql password>';
  11. GO
  12. CREATE EXTERNAL DATA SOURCE SynapseSqlDataSource
  13. WITH (
  14. TYPE = RDBMS,
  15. LOCATION = '<synapse workspace>-ondemand.sql.azuresynapse.net',
  16. DATABASE_NAME = 'SampleDB',
  17. CREDENTIAL = SynapseSqlCredential
  18. );
  19. GO
  20.  
  21. /*Azure SQL中建Synapse外表*/
  22. CREATE SCHEMA csv;
  23. GO
  24. CREATE EXTERNAL TABLE csv.YellowTaxi(
  25. vendor_id VARCHAR(100) COLLATE Latin1_General_BIN2,
  26. pickup_datetime DATETIME2,
  27. dropoff_datetime DATETIME2,
  28. passenger_count INT,
  29. trip_distance FLOAT,
  30. rate_code INT,
  31. store_and_fwd_flag VARCHAR(100) COLLATE Latin1_General_BIN2,
  32. pickup_location_id INT,
  33. dropoff_location_id INT,
  34. payment_type INT,
  35. fare_amount FLOAT,
  36. extra FLOAT,
  37. mta_tax FLOAT,
  38. tip_amount FLOAT,
  39. tolls_amount FLOAT,
  40. improvement_surcharge FLOAT,
  41. total_amount FLOAT
  42. )
  43. WITH ( DATA_SOURCE = SynapseSqlDataSource );

https://devblogs.microsoft.com/azure-sql/read-azure-storage-files-using-synapse-sql-external-tables/

MPP始终会遇到数据倾斜问题,当前大部分关系数据库已经支持列存储,是否需要MPP数仓值得考虑。使用大数据Kimball模式,数据湖+数据集市。

Synapse Analytics Serverless+Azure SQL(列存储表)就是此模式。SQL Server 2019的列存储表已经非常完美

  • 对象存储或Hive做ODS层,归档区
  • 关系数据库做数仓

 

学习材料

Azure Synapse Analytics默认开通服务器版本,不使用MPP SQL的情况下费用很低,推荐大家去体验下,下面连接是官方学习课程。

https://docs.microsoft.com/zh-cn/learn/paths/build-data-analytics-solutions-using-azure-synapse-serverless-sql-pools/

Data Mesh

同时还有另外一种数据概念,数据网格,由Thoughtworks提出。可以查看这篇博客文章

https://www.jamesserra.com/archive/2021/02/data-mesh/

 

  • Synapse serverless跨库查询Azure Data Lake

官方案例

https://azure.microsoft.com/zh-cn/blog/4-common-analytics-scenarios-to-build-business-agility/

原文链接:http://www.cnblogs.com/dexterz/p/14443863.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号