Shark第一印象

博客提及出自特定网页,主要分享了对Shark的第一印象,但未详细阐述具体内容。

出自http://gigix.blogdriver.com/gigix/106028.html

Shark第一印象- -

                                      

试了一下Enhydra Shark工作流引擎,暂时还不知道如何编程使用,只有一些肤浅的印象。
 
庞大——比OSWorkflow和Werkflow都大了许多,概念非常完整,一时间还很难完全理解这些概念。对于OSWorkflow和Werkflow这种轻量级工作流来说,要管理的唯一目标就是流程实例(process instance),操纵流程实例的状态变迁,至于如何使用流程实例、状态如何发展,都在工作流引擎之外。Shark管理的目标要宽泛得多,比如有User和UserGroup的概念,用户必须有此角色(即group)才能涉足此流程。不知道这会不会和统一用户管理平台冲突。
 
标准——完全符合WfMC参考模型,并且没有任何额外扩展,采用XPDL作为工作流定义语言。标准是好事,但是对于一些比较特殊的流程,我担心它的扩展能力。比如电子政务中经常会出现一种“无序流程”(只要领导插手,就可以随便到任何位置),WfMC是否能支持呢?另外,Enhydra提供JaWE编辑器,可能是最好的XPDL可视化编辑器。
 
支持多语言插件——对于需要自动执行的流程,Shark允许插入多种语言的运行单元,包括Java、JavaScript、BeanShell、Python等等,相信提供对Groovy的支持也会很简单。我们自己的工作流不支持自动执行,OSWorkflow只支持简单的BeanShell(语句直接写在配置文件中)。
 
持久化——默认的持久化方式是DODS,这是Enhydra自己做的一个O/R mapping。原来用的数据库是HSQL,我今天尝试迁移到MySQL还没有成功,因此也不知道这个持久化机制究竟如何。另外还提供LDAP的持久化,持久化方式的移植也不知道是否困难。我相信O/R mapping基础上移植不会太难。
 
服务接口——可以作为应用程序的一部分在代码级集成,也可以作为外部服务通过RPC集成。Shark很重视CORBA接口,对于异构环境的集成应该是很有帮助的。这里也有一点性能上的顾虑:应用内集成时,工作流引擎和工作流实例会不会带来太大的性能开销?毕竟它给我一种重量级的感觉。
 
明天如果有空就继续尝试,先把应用内集成搞明白,那么RPC集成也就简单了。
03-25
### 关于Shark Framework或Apache Shark数据处理 #### 定义与背景 Shark 是一种基于 Spark 的分布式 SQL 查询引擎,最初由 UC Berkeley AMP 实验室开发。它旨在提供比传统 Hive 更高的性能和更丰富的功能集[^1]。然而,在后续的发展过程中,Shark 被弃用并逐渐被 Spark SQL 取代。 #### 性能比较 相比于传统的 Hive-on-MapReduce 架构,Shark 提供了显著的性能改进。这是因为 Shark 基于内存计算模型,能够减少磁盘 I/O 并优化查询执行计划[^3]。此外,由于其底层依赖于 Spark 的 RDD 数据结构,Shark 还支持复杂的多阶段操作而无需多次写入磁盘。 #### 功能特性 尽管 Shark 曾经是一个重要的项目,但它的一些核心理念已经被集成到 Spark SQL 中。Spark SQL 不仅继承了 Shark 的优点,还进一步增强了兼容性和易用性。例如,Spark SQL 支持标准 ANSI SQL 语法以及 DataFrame API,使得开发者可以更加灵活地进行数据分析。 #### 应用场景 对于需要实时分析能力的企业来说,采用类似于 Spark SQL 或曾经存在的 Shark 框架会优于经典的 Hadoop MapReduce 方法。这些现代工具不仅提供了更高的吞吐量,还能满足亚秒级延迟的需求。 ```python from pyspark.sql import SparkSession spark = SparkSession.builder.appName("example").getOrCreate() # Example query using Spark SQL data = [("James", "", "Smith", "36636", "M", 3000), ("Michael", "Rose", "", "40288", "M", 4000), ("Robert", "", "Williams", "42114", "M", 4000)] columns = ["firstname", "middlename", "lastname", "id", "gender", "salary"] df = spark.createDataFrame(data=data, schema=columns) df.select("firstname", "salary").show() ``` 上述代码展示了如何利用 PySpark 创建一个简单的 DataFrame,并通过 Spark SQL 执行基本的选择操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值