主页 » 正文

Storm Spark Hadoop 这三个流行并行计算框架有什么不同

十九科技网 2025-07-12 05:56:09 177 °C

Storm Spark Hadoop 这三个流行并行计算框架有什么不同

Storm用于处理高速、大型数据流的分布式实时计算系统。为Hadoop添加了可靠的实时数据处理功能 Spark采用了内存计算。从多迭代批处理出发,允许将数据载入内存作反复查询,此外还融合数据仓库,流处理和图形计算等多种计算范式。Spark构建在HDFS上,能与Hadoop很好的结合。它的RDD是一个很大的特点。 Hadoop当前大数据管理标准之一,运用在当前很多商业应用系统。可以轻松地集成结构化、半结构化甚至非结构化数据集。

如何在Hadoop的MapReduce程序中处理JSON文件

尽量在写MapReduce程序处理日志时,需要解析JSON配置文件,简化Java程序和处理逻辑。但是Hadoop本身似乎没有内置对JSON文件的解析功能,我们不得不求助于第三方JSON工具包。这里选择json-simple实现我们的功能。

在Hadoop上执行Java程序的命令如下所示:

[hadoop@localhost]$ hadoop jar my-mapreduce.jar

my-mapreduce.jar是我们进行日志处理的MapReduce程序。现在假定我们需要在其中处理JSON格式的配置文件,这里忽略如何在Hadoop集群读取文件的细节,只关注如何使用JSON工具包。下面是简单的HelloWorld程序:

import org.json.simple.JSONObject;

public class HelloWorld{

public static void main(String[] args){

JSONObject obj=new JSONObject();

obj.put(name,foo);

obj.put(num,new Integer(100));

obj.put(balance,new Double(1000.21));

obj.put(is_vip,new Boolean(true));

obj.put(nickname,null);

System.out.print(obj);

}

}

在HelloWorld程序中,只简单修改JSON对象,将其内容打印输出,从而验证解析修改JSON内容的过程。

编译:

由于MapReduce程序需提交到Hadoop集群执行,所以HelloWorld依赖的json-simple包必须存在于集群的classpath路径中,如果集群上没有对应的jar包。执行HelloWorld会出现如下异常:

Exception in thread main java.lang.NoClassDefFoundError: org/json/simple/JSONObject

简单的解决方法是将json-simple包直接和HelloWorld编译结果一起打包,然后即可使用命令hadoop jar HelloWorld.jar执行。需将json-simple的jar包解压再同HelloWorld打包。

编译命令如下所示:

[hadoop@localhost]$ jar tf json-simple-1.1.1.jar

META-INF/MANIFEST.MF

META-INF/

META-INF/maven/

META-INF/maven/com.googlecode.json-simple/

META-INF/maven/com.googlecode.json-simple/json-simple/

META-INF/maven/com.googlecode.json-simple/json-simple/pom.properties

META-INF/maven/com.googlecode.json-simple/json-simple/pom.xml

org/

org/json/

org/json/simple/

org/json/simple/ItemList.class

org/json/simple/JSONArray.class

org/json/simple/JSONAware.class

org/json/simple/JSONObject.class

org/json/simple/JSONStreamAware.class

org/json/simple/JSONValue.class

org/json/simple/parser/

org/json/simple/parser/ContainerFactory.class

org/json/simple/parser/ContentHandler.class

org/json/simple/parser/JSONParser.class

org/json/simple/parser/ParseException.class

org/json/simple/parser/Yylex.class

org/json/simple/parser/Yytoken.class

[hadoop@localhost]$ unzip json-simple-1.1.1.jar

[hadoop@localhost]$ javac -classpath ./json-simple-1.1.1.jar HelloWorld.java

[hadoop@localhost]$ jar -cfe HelloWorld.jar HelloWorld HelloWorld.class ./org/

执行HelloWorld

[hadoop@localhost]$ hadoop jar HelloWorld.jar

{balance:1000.21,num:100,nickname:null,is_vip:true,name:foo}

版权声明:部分内容由互联网用户自发贡献,如有侵权/违规,请联系删除
本平台仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

本文链接地址:/dsj/215232.html

相关文章

大数据开发的就业怎么样

大数据专业就业三大方向 大数据主要的三大就业方向:大数据系统研发类人才、大数据应用开发类人才和大数据分析类人才。 在此三大方向中,各自的基础岗位一般为大数据系统研发

大数据 2025-05-21 231 °C

hadoop开发主要是开发什么

一、hadoop开发主要是开发什么 现在的hadoop开发都是用mapreduce来实现业务的计算等,利用hadoop的多机并行计算能力 二、Hadoop和MapReduce究竟分别是做什么用的 1、hadoop是一种分布式系统的平

大数据 2025-05-20 244 °C