设为首页 - 加入收藏 华夏网 (http://www.hxwgxz.com)- 云主机,资讯,互联网,人工智能,云计算,大数据,区块链,VR,站长网!
热搜: 芯片 平台 google 2019
当前位置: 主页 > 大数据 > 正文

大数据处理语言:U-SQL 介绍

发布时间:2021-03-05 21:30 所属栏目:[大数据] 来源:网络整理
导读:微软宣布了新的 Azure 数据湖(Azure Data Lake)服务,该服务被用于云分析,包括了一个超大规模信息库;一个在 YARN 上建立的新的的分析服务,该服务允许数据开发者和数据科学家分析全部的数据;还有 HDInsight,一个全面管理 Hadoop、Spark、Storm 和 HBas

大数据处理语言:U-SQL 介绍

微软宣布了新的 Azure 数据湖(Azure Data Lake)服务,该服务被用于云分析,包括了一个超大规模信息库;一个在 YARN 上建立的新的的分析服务,该服务允许数据开发者和数据科学家分析全部的数据;还有 HDInsight,一个全面管理 Hadoop、Spark、Storm 和 HBase 的服务。Azure 数据湖分析包括 U-SQL,这个语言综合了 SQL 的优点与你自己所写代码的表现能力。U-SQL 的可扩展分布式查询功能让你可以有效地分析存储器或关联存储器(比如 AzureSQL 数据库(Azure ?SQL Database))内的数据。这篇博文中,我将会概述 U-SQL 的开发目标、我们的一些灵感和这个语言背后的设计理念,同时我会向你展示一些用于说明这个语言几个主要方面的例子。

为什么我们需要 U-SQL?


如果你分析了的大数据分析的特点,就会很容易的产生一些有关易用性的需求,一个功能强大的语言应该:

  • 可以处理任何类型的数据。例如从安全日志中分析僵尸网络(BotNet)攻击模式,通过机器学习来提取图像和视频中的特征,这种语言需要允许你操作任何类型的数据。

  • 使用自定义的代码很容易地表现复杂的(经常是表现某公司自营业务的)算法。举例来说,基础的查询语言通常不易表达自定义的过程,从用户定义的函数到他们自定义的输入输出格式都是如此。

  • 对任何尺度的数据进行有效的缩放,你无须再关心扩展拓扑(scale-out topology)、管道代码或特定分布式基础设施的限制。

现有的大数据语言该如何处理这些需求?

基于 SQL 的语言(例如 Hive 等)提供声明性的方式,原生支持扩容,并行执行以及优化。这个特性使得其简单易用,被开发人员广泛使用;其功能强大,适用于很多标准的分析及仓储类型。不过他们的扩展模型和对非结构化数据及文件的支持经常只是些附属功能,不容易使用。比如,即使您只想快速浏览一下文件或者远程数据,您也需要在查询之前先创建编目对象,将其系统化。这点严重降低了语言的敏捷性。虽然基于 SQL 的语言通常有一些扩展点来定制格式,定义函数以及聚合,但是他们的构建,集成和维护相当复杂,各种编程语言的支持也差别很大。

用基于编程语言的方式来处理大数据,这样方式可以简单方便地添加定制化代码。但是,程序员通常需要另外编写代码来处理扩容和性能,并且难以管理执行拓扑和工作流。比如不同执行阶段的并发或者架构扩容。这样的代码不仅难写,而且不易优化性能。有些框架支持声明式组件,例如集成语言查询,或者嵌入式 SQL 支持。但是 SQL 可能会被当做字符串处理,没有辅助工具。并且可扩展性集成较差,由于程序性代码并不考虑副作用,所以较难优化,而且不能重用。

综合考虑基于 SQL 的语言以及程序语言,我们设计出了 U-SQL,他用 C# 编写,具备声明性 SQL 语言原生的可扩展性,又对其进一步扩展。集各种范式于一身,集结构化,非结构化,远程数据处理于一身,集声明式以及定制化命令编程于一身,集语言扩展能力于一身。

U-SQL 构建在微软的 SCOP 经验以及其他语言例如 T-SQL,ANSI SQL 以及 Hive 的基础之上。例如,我们对 SQL 和编程语言的集成,执行以及对 U-SQL 框架的优化都基于 SCOPE,这使得每天可以运行成千上万个作业。我们也会对调整系统元数据(数据库,表等等),SQL 语法,T-SQL,ANSI SQL 等 SQL Server 用户所熟悉的语言语义等支持,是的他们可以协同通过。 我们使用C#数据类型即表达式支持,这样您可以在 SELECT 里无缝潜入 C# 谓词及表达式,从而植入业务逻辑。最后,通过对 Hive 以及其他大数据语言数据模式,处理需求等研究,将其集成到我们的框架里。

简言之,基于现有语言和经验的 U-SQL 语言,有利于您简单地处理复杂问题。

展示 U-SQL!

我们假设我已经下载了所有我的 Twitter 历史记录,包括:我推送的,转发的,提到的。并且作为一个 CSV 文件上传到我的 Azure ?Data Lake Store。

大数据处理语言:U-SQL 介绍

在这里例子里,我知道我想要处理数据的结构,第一步我只想分组查询出每个作者的推送数据的数量:

@t = EXTRACT date string

? ? ? ? ? ?,time string

? ? ? ? ? ?,author string

? ? ? ? ? ?,tweet string

? ? ?FROM "/input/MyTwitterHistory.csv"

? ? ?USING Extractors.Csv();

??

@res = SELECT author

? ? ? ? ? ?,COUNT(*) AS tweetcount

? ? ? ?FROM @t

? ? ? ?GROUP BY author;

??

OUTPUT @res TO "/output/MyTwitterAnalysis.csv"

ORDER BY tweetcount DESC

USING Outputters.Csv();

上面的 U-SQL 脚本显示了三个使用 U-SQL 处理数据的主要步骤:

  • 提取。从你的源数据中提取数据。 简单的说就是使用 EXTRACT 申明查询,概述数据。申明的数据类型基于 C# 的数据类型,这里我使用了内置的 Extractors 类库去读取和schematize(系统化) CSV 文件。

  • 转换。使用 SQL 并且(或者)用户自定义操作 (你可以转换为其他时间)。在上面的例子中, 使用了一个常见的 SQL 表达式,做了一个 GROUP BY 聚合操作。

  • 输出。结果既可以是文件,也可以输出到一个 U-SQL 表格保存在内存中用作后续的处理。

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章