Apache Beam欲通过uber api获取大数据

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介:

现在,有用的Apache大数据项目似乎每日更新。相比于每次都重新学习的方式,如果可以通过一个统一的API如何呢?

Apache Beam欲通过uber api获取大数据

长期开玩笑说Hadoop生态系统是那种如果你不喜欢一个为特定系统的API,等待五分钟,两个新的Apache项目将出现随之而来崭新的API可供学习。

有很多要赶着学习。更糟糕的是,它会导致很多工作迁移到不同的项目仅仅为了保持通用性。“我们已经在暴风雨中实现了流媒体解决方案!现在我们已经快速地重做了!我们目前正在重写pache Flink(或Apex)的核心…我们已经忘记了起初我们试图解决的业务用例。

输入Apache Beam,一个试图统一数据处理框架有核心API的新项目,允许简单的执行引擎之间的移植。

现在,我知道你正在思考抛出另一个API。但Beam有很强的继承性。它来自谷歌并且其研究成果在Millwheel FlumeJava论文上,在多年的运营经验后其出版。它定义了一个有些熟悉的有向无环图数据处理引擎,可以处理无序传递成为常态的情况下的无限数据流,毫无例外。

但是稍等,我听到了你在叫喊。这不是谷歌云数据流吗?是的!也不是。谷歌云数据流是一个完全托管服务,你使用数据流SDK编写应用程序,然后将它们提交到Google的服务器上运行。Apache Beam,在另一方面,仅仅是数据流SDK和一组“运动者”就是SDK元素映射到一个特定的执行引擎。是的,你可以在谷歌云数据流运行Apache Beam应用程序,但你还可以使用Apache Spark或Apache Flink,代码几乎没有变化。

搭乘Apache Beam

关于Apache Beam SDK有四个主要的概念:

1、Pipeline:如果你曾经用过Spark,这有点类似于SparkContext。你所有的操作将开始于调度对象,你会用它来建立数据流从输入源,应用转换,并将结果写入输出下沉。

2、PCollection: PCollections类似于原始的Spark的弹性分布式数据集(RDD),它们包含一个潜在的无限数据流。这些信息都来源于输入源,然后应用转换。

3、Transforms: 一个操作PCollection处理步骤执行数据操作。典型的传递途径可能会在一个输入源有多个转换操作 (例如,将一组日志条目传入的字符串转换成一个键/值对,关键是IP地址和值是日志消息)。Beam SDK附带的一系列标准聚合建成的,当然,你可以定义根据自己的处理需求自定义。

4、I/O sources and sinks:最后,源和汇为你的数据提供输入和输出端点。

让我们来看一个完整的Beam项目。为此,我们将使用Python still-quite-experimental SDK和完整的文本莎士比亚的《李尔王》:

import re

import google.cloud.dataflow as df

p = df.Pipeline('DirectPipelineRunner')

(p

| df.Read('read',

df.io.TextFileSource(

'gs://dataflow-samples/shakespeare/kinglear.txt'))

| df.FlatMap('split', lambda x: re.findall(r'w+', x))

| df.combiners.Count.PerElement('count words')

| df.Write('write', df.io.TextFileSink('./results')))

p.run()

导入正则表达式和数据流库之后,我们构造一个管道对象并将其传递给我们希望使用的送货员(在本例中,我们使用的是DirectPipelineRunner,本地测试运行器)。

从那,我们从一个文本文件读取(位置指向谷歌云存储)和执行两个转换。第一个是flatMap,我们通过一个正则表达式把每个字符串分成词,并返回一个PCollection,其中所有单独的词都来自于“李尔王。”然后我们应用内置的计数操作计数我们的单词。

最后一部分管道将计数操作的结果写入磁盘。一旦管道被定义,它调用run()方法。在这种情况下,管道被提交到本地测试运行器,但通过改变流道类型,我们可以向谷歌云数据流,Flink,Spark或任何其他的可用Apache Beam。

运行拨零

一旦我们准备好应用程序,它可以被提交运行在谷歌云数据流没有任何困难,因为它只是使用数据流SDK。

我们的想法是,跑步者将提供其他执行引擎。Beam目前包括Apache Flink和Apache Spark,分别由DataArtisans和Cloudera维护。这就是当前的一些Beam的褶皱可以发挥的作用,因为数据流模型并不总是容易映射到其他平台上的。

在Beam网站可用的能力矩阵束上显示你的特性,这不被支持。特别地,在代码应用运行在Spark上您需要有额外的制约。只有几行额外的代码,但它不是一个无缝过渡。

很有趣的是Spark 流转目前使用Spark原始的RDD而不是DataFrames。这绕过Spark催化剂优化器,几乎可以肯定,Beam工作运行在Spark上将低于运行一个DataFrame版本。我想当Spark 2.0发布这将会改变,但它绝对是一个限制Spark 运行并且超过了能力矩阵所呈现的所有。

目前,Beam只包括谷歌云数据流的运行,Apache Spark,Apache Flink以及本地出于测试目的的运行。但有谈论为框架新建运行的比如Storm和MapReduce。在MapReduce的情况下,任何运行最终将能够支持一个子集Apache Beam所提供的,因为它只能为底层系统提供工作。

大的野心

Apache Beam是一个雄心勃勃的项目。它的最终目标是统一所有的数据处理引擎在一个API下,使它非常简单的迁移。也就是说,Beam应用程序运行在自托管Flink集群到谷歌云数据

人来开发这些应用程序是伟大的。很明显,谷歌花了数年时间精炼Beam模型覆盖大部分我们中的许多人需要实现的数据处理模式。但是请注意,Beam目前是一个Apache“孵化”项目,所以在把它投入生产之前注意练习。Beam值得密切关注是因为它包含更多的运行者——以及Beam SDK更多的语言端口。



本文转自d1net(转载)

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3月前
|
监控 负载均衡 API
Apache Apisix轻松打造亿级流量Api网关
Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上行、灰度发布、熔断、鉴权、可观测等丰富的流量管理功能。适用于处理传统南北向流量、服务间东西向流量及 k8s 入口控制。Airflow 是一个可编程、调度和监控的工作流平台,基于有向无环图 (DAG) 定义和执行任务,提供丰富的命令行工具和 Web 管理界面,方便系统运维和管理。
Apache Apisix轻松打造亿级流量Api网关
|
4月前
|
消息中间件 NoSQL Kafka
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
103 5
|
4月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
62 1
|
7月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之使用API调用ODPS SQL时,出现资源被定时任务抢占,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
116 32
|
7月前
|
分布式计算 DataWorks API
DataWorks产品使用合集之使用REST API Reader往ODPS写数据时,如何获取入库时间
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
应用服务中间件 Linux API
Linux 利用 Cloudflare API 配置 acme.sh 自动续签 SSL (Apache、Nginx适用)
安装acme.sh工具,命令为`curl https://get.acme.sh | sh -s email=你的邮箱`。接着配置Cloudflare API,创建并记录API令牌及Zone ID。最后通过`acme.sh --issue -d 你的域名 --dns dns_cf`签发SSL证书,对于Nginx可使用`acme.sh --install-cert`命令安装证书,并设置自动重载Nginx服务。
|
7月前
|
分布式计算 大数据 Go
MaxCompute操作报错合集之使用go sdk调用GetTunnelEndpoint出现报错:InvalidAction.NotFoundSpecified api is not found,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
7月前
|
分布式计算 DataWorks 大数据
MaxCompute产品使用合集之DataWorks中如何根据MC数据源做成api
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
8月前
|
分布式计算 自然语言处理 大数据
【大数据】MapReduce JAVA API编程实践及适用场景介绍
【大数据】MapReduce JAVA API编程实践及适用场景介绍
210 1
|
8月前
|
Java 大数据 API
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
168 0
【大数据】HDFS、HBase操作教程(含指令和JAVA API)

推荐镜像

更多