大数据处理语言:U-SQL 介绍
副标题[/!--empirenews.page--]
为什么我们需要 U-SQL? 如果你分析了的大数据分析的特点,就会很容易的产生一些有关易用性的需求,一个功能强大的语言应该:
现有的大数据语言该如何处理这些需求? 基于 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。 在这里例子里,我知道我想要处理数据的结构,第一步我只想分组查询出每个作者的推送数据的数量: @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 处理数据的主要步骤:
(编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |