Spark
文章平均质量分 57
sparkexpert
大数据挖掘技术(人工智能)的爱好者
展开
-
关于Spark运行流式计算程序中跑一段时间出现GC overhead limit exceeded
最近在升级一个框架的时候,发现某个流式计算程序每隔一定的时间就会出现GC overhead limit exceeded的错误问题。这个问题肯定是内存不够,但是初始设置的内存是够的啊,于是进行各种内存优化,如将变量定义在循环体外等控制,但是发现只是将这个间隔时间往后推了一下而已。还是没有找到症结所在。后来再分析了下,可能是哪些变量占了内存没有及时释放掉,原创 2016-11-15 11:35:46 · 3874 阅读 · 1 评论 -
Spark RDD(DataFrame) 写入到HIVE的代码实现
在实际工作中,经常会遇到这样的场景,想将计算得到的结果存储起来,而在Spark中,正常计算结果就是RDD。而将RDD要实现注入到HIVE表中,是需要进行转化的。关键的步骤,是将RDD转化为一个SchemaRDD,正常实现方式是定义一个case class.然后,关键转化代码就两行。data.toDF().registerTempTable("tabl原创 2016-03-23 17:04:33 · 22671 阅读 · 1 评论 -
spark-submit动态提交的办法(SparkLauncher实战)
spark程序编译完成后,一般都要传送到spark-submit进行调用。然而为了使程序更加易于集成,需要spark-submit能够动态化SparkLauncher是spark提供的外部调用的接口。Package org.apache.spark.launcher DescriptionLibrary for launching Spark applica原创 2016-04-02 22:14:07 · 9493 阅读 · 7 评论 -
spark dataframe操作集锦(提取前几行,合并,入库等)
spark dataframe派生于RDD类,但是提供了非常强大的数据操作功能。当然主要对类SQL的支持。在实际工作中会遇到这样的情况,主要是会进行两个数据集的筛选、合并,重新入库。首先加载数据集,然后在提取数据集的前几行过程中,才找到limit的函数。而合并就用到union函数,重新入库,就是registerTemple注册成表,再进行写入到HIVE中。原创 2016-04-02 10:52:38 · 91650 阅读 · 1 评论 -
spark访问redis集群中某个数据库的问题
正常redis是没有数据库的概念的,但是当redis变成集群的时候,它是可以设置数据库的。(其实也就是开辟一块索引)但是以前接触的spark用rediscontext的方式,只能设置IP和端口号。只能在网上找相关资料。才发现之前找的库已经更新了。里面就提供了这样的参数。(https://github.com/RedisLabs/spark-redis)在该网址中原创 2016-04-01 22:15:15 · 3497 阅读 · 0 评论 -
spark批量读取大量小文件的办法
在实际工程中,经常会遇到要一起读取众多小文件的办法。本来正常情况下是进行文件夹的遍历。幸运的是,spark原生是支持这种功能的。它可以批量地读取众多的文件,也可以按照一定的方式进行过滤。命令十分简单。如下:sc.textfile("/dir/*.txt")其中DIR就是路径,而*.txt则是对某种类型的文件进行过滤。通过这种方式,可以直接实现对众原创 2016-03-17 10:47:59 · 11449 阅读 · 0 评论 -
initial job has not accepted any resources的spark错误解决办法
在运行多个spark应用程序的时候,经常会出现initial job has not accepted any resources的错误。而如果用spark-submit方式提交的话,经常是结果不显示。而在监控网页上看到的是状态一直在waiing.如下所示。经过仔细检查,发现是CORES的问题,由于之前的程序将CORES全部占用,而后来的任务没有足够的CPU来支撑,原创 2016-03-04 16:57:35 · 9709 阅读 · 0 评论 -
spark sql hive批量导入文本文件
在很多情况下,会需要将批量生成(如按天生成的记录)导入到HIVE中。针对这种应用场景,进行实验。首先需要进行文件目录的遍历,借助SCALA强大的函数式编程能力,利用ARRAY中的MAP函数进行操作即可。如函数如下:def LoadIntoHive(sc:HiveContext,dir:String):Unit= { var cdrDi原创 2016-03-03 16:29:11 · 4095 阅读 · 0 评论 -
面向大规模社会关系网络数据的层次数据发现
现在随便哪个关系网络的数据规模都非常庞大,如https://snap.stanford.edu/data/上面公开的数据集,动不动都是几万个节点,十几万个边的。然而这种大图数据背后的一些规律挖掘更突显了大数据发现价值的本质。本篇博客在承接上次社团发现的问题,继续在大规模关系网络挖掘上进行分析测试。主要实验数据集采用了三个:(1) https://snap.s原创 2015-12-25 16:09:57 · 1840 阅读 · 0 评论 -
spark读取多个文件夹(嵌套)下的多个文件
在正常调用过程中,难免需要对多个文件夹下的多个文件进行读取,然而之前只是明确了spark具备读取多个文件的能力。针对多个文件夹下的多个文件,以前的做法是先进行文件夹的遍历,然后再进行各个文件夹目录的读取。今天在做测试的时候,居然发现spark原生就支持这样的能力。原理也非常简单,就是textFile功能。编写这样的代码,读取上次输出的多个结果,由于RDD保存结果原创 2016-05-05 20:24:34 · 22058 阅读 · 3 评论 -
org/apache/hadoop/hbase/CompatibilityFactory(scan)没有找到类的解决办法
在做spark连接Hbase的时候,总会蹦出一些问题。总结起来就是各种类的找不到。如:org/apache/hadoop/hbase/CompatibilityFactory没有找到类, E xception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/原创 2016-06-28 20:49:53 · 3615 阅读 · 0 评论 -
Spark Hbase读取操作的一些总结与测试
Spark连接HBase实现查询的操作有好多种步骤,其中常用的是直接调用Hbase本身提供的写入和读出的接口。然而不少人在此基础上进行了各种封装,有的支持spark sql on Hbase,著名如华为开源的astro,但是这个也非常有局限性,其仅支持spark 1.4.0,其中的源码已经远远无法适应1.6.0以上的版本。另一种思路是实现Hbase作为Spark的一种数据源原创 2016-06-28 20:54:57 · 5333 阅读 · 1 评论 -
Spark 2.0 DataFrame map操作中Unable to find encoder for type stored in a Dataset.问题的分析与解决
随着新版本的spark已经逐渐稳定,最近拟将原有框架升级到spark 2.0。还是比较兴奋的,特别是SQL的速度真的快了许多。。 然而,在其中一个操作时却卡住了。主要是dataframe.map操作,这个之前在spark 1.X是可以运行的,然而在spark 2.0上却无法通过。。看了提醒的问题,主要是:******error: Unable to find encod原创 2016-10-20 12:17:13 · 18408 阅读 · 4 评论 -
对spark dataframe join之后的列值NULL值进行填充为指定数值的操作
众所周知,两个数据集如A,B取JOIN操作的时候,其结果往往会出现NULL值的出现。这种情况是非常不利于后续的分析与计算的,特别是当涉及到对这个数值列进行各种聚合函数计算的时候。针对这种问题,当然从最简单的dataframe.map来处理是一种快速方法。然而今天在针对这个问题解决的时候,发现spark还提供了一个高级操作,就是:na.fill的函数。原创 2016-10-17 11:57:08 · 12000 阅读 · 0 评论 -
如何避免spark dataframe的JOIN操作之后产生重复列(Reference '***' is ambiguous问题解决)
spark datafrme提供了强大的JOIN操作。但是在操作的时候,经常发现会碰到重复列的问题。如下:如分别创建两个DF,其结果如下:val df = sc.parallelize(Array( ("one", "A", 1), ("one", "B", 2), ("two", "A", 3), ("two", "B", 4))).toDF("原创 2016-10-17 11:31:01 · 15117 阅读 · 3 评论 -
sparksql udf自定义函数中参数过多问题的解决
在进行spark sql数据库操作中,常常需要一些spark系统本身不支持的函数,如获取某一列值中的字符串。如要获取 “aaaakkkkk”中的第4-第8个字符。针对这种需求,只有设置UDF来实现了。如val fun:((String,Int,Int) => String) = (args:String, k1:Int, k2:Int) => { args.原创 2016-10-16 20:23:26 · 6029 阅读 · 1 评论 -
spark 2.0.0与HIVE结合的测试
spark 2.0.0中,对hive的结合开发是否进行了改变,于是进行了如下测试。最大的变化就是没有什么HiveContext了。直接就是一个SparkSession。val spark = SparkSession .builder() .master("local[*]") .appName("Spark Hive Example")原创 2016-09-12 20:30:40 · 4706 阅读 · 0 评论 -
Spark 2.0.0正式版编译及问题分析
从上次编译了技术预览版2.0.1之后,官网终于放出了正式版本的2.0.0版本。Spark Release 2.0.0(见http://spark.apache.org/releases/spark-release-2-0-0.html)Apache Spark 2.0.0 is the first release on the 2.x line. The major原创 2016-08-31 22:04:32 · 1438 阅读 · 0 评论 -
spark 2.0.1(技术预览版)的编译与测试(附一些新特性的介绍)
spark 2.0的预览版在前几个月已经吵得沸沸扬扬,趁着今天一起编译了下这个版本,还是非常方便的。这回采用MVN来进行编译,具体见官网的编译帮助。Building with build/mvnSpark now comes packaged with a self-contained Maven installation to ease building an原创 2016-07-18 16:21:08 · 1528 阅读 · 0 评论 -
太多的.hive-stagingxxx文件的处理
跑一段时间的HIVE程序之后,偶尔打开对应的HDFS文件夹,才发现在其目录下,产生了太多的.hive-staging_hive_date-time_ XXX文件。仔细一看,才发现几乎每个HIVE的查询语句都会产生这样的一个文件,这种文件会随着时间积累不断增加。这也是前段时间造成HDFS目录到项的原因之一。查了网上的相关说明,也没有比较好的说明,可能这是基于任何一原创 2016-07-15 16:34:53 · 7351 阅读 · 0 评论 -
Spark Hive在Eclipse代码中直接编译问题
利用Eclipse进行Spark开发过程中,特别是针对Hive开发时,经常会碰到这样一个问题,就是无法找到metastore。而一旦找不到的时候,hive会自动创建一个临时的本地的metastore,其提示INFO信息如下:15/12/24 20:46:02 INFO HiveContext: Initializing execution hive, version 1.2.115/12/原创 2015-12-24 20:43:40 · 5493 阅读 · 2 评论 -
利用spark进行层次社团发现(louvain算法测试)
社团是复杂网络科学中一种重要的拓扑结构,也是物以类聚,人以群分自然现象在网络中的一种反映。因此对复杂网络进行社团发现是SNA(社会网络分析)中重要的内容之一。现在的社团发现算法层出不穷,有非常多非常优秀有社团发现算法。其中louvain的快速社团发现算法是一种高效的层次社团发现算法。按照其主页上的原理英文就是:“First, it looks for "small" communi原创 2015-12-23 21:49:54 · 9022 阅读 · 8 评论 -
spark访问Redis并进行操作
Redis是一种高性能的内存数据库,其应用场合非常广泛,在一些实时性要求比较高的场景中,以Redis作为架构来实现的是比较多的。Redis提供了好几种数据结构,如Set, List, Hash等。可以适应不同的场合要求。但是也发现Redis存在一个问题,其没有表格的概念,而是以字典(键空间)的方式来管理的,这与传统的SQL方式是不大像的。为了实现对Redis的高原创 2016-01-07 22:58:47 · 13728 阅读 · 3 评论 -
spark master开发中org.apache.spark.serializer.JavaDeserializationStream错误解决
在spark开发过程中,一直想在程序中进行master的开发,如下代码:val conf = new SparkConf().setMaster("spark://hostname:7077").setAppName("Spark Pi")但是直接进行此项操作,老是碰到org.apache.spark.serializer.JavaDeserializationStream错误原创 2015-10-14 10:55:01 · 1564 阅读 · 0 评论 -
搜狗引擎查询日志的数据入库(Mysql…
为了进行hive与spark的开发,所以想以某个大规模数据集进行测试,找到了搜狗引擎的日志数据,网上公开的应该有一个月的数据,差不多为5000多万条,做测试应该是满足要求的。搜索引擎查询日志库设计为包括约1个月(2008年6月)Sogou搜索引擎部分网页查询需求及用户点击情况的网页查询日志数据集合。为进行中文搜索引擎用户行为分析的研究者提供基准研究语料。(网址为:http://www.sog原创 2015-10-14 10:07:34 · 1285 阅读 · 0 评论 -
Tachyon 0.7.1源码的编译
Tachyon是一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存在tachyon里的文件。把Tachyon是架构在最底层的分布式文件存储和上层的各种计算框架之间的一种中间件。主要职责是将那些不需要落地到DFS里的文件,落地到分布式内存文件系统中,来达到共享内存,从而提高效率。同时可以减少内存冗余,GC时间等。为了更好地在Spark中使用tachyon,于是对tachyon源码进原创 2015-10-14 10:07:29 · 755 阅读 · 0 评论 -
Kafka源码的编译(0.8.2.1)
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、ApacheStorm、Spark都支持与Kafka集成。Kafka源码很少,就两个主要的包,kafka-core, kafka-client。它主要由几个部分组成:BrokerKafka集群包含一个或多个服务器,这种服原创 2015-10-14 10:07:37 · 764 阅读 · 0 评论 -
SparkV1.5源码编译版通过
经过编译,终于将Spark新版本的几个子工程全部编译通过,没有采用GITHUB的方式,采用逐个工程添加代码+JAR包的方式编译通过。 Spark强大的框架,通过源码的学习分析将为后续利用Spark提供基础平台。 采用编译环境:Scala IDE + Scala 2.10.5 + Win7 欢迎交流学习,邮箱号:[email protected]原创 2015-10-14 10:07:26 · 480 阅读 · 0 评论 -
Spark R安装成功的步骤
欢迎交流学习: Email : [email protected]网上有很多关于spark R的安装过程,但是按照那个过程总是出错。当然最常见的问题是:Launching sbt from sbt/sbt-launch-0.13.6.jarError: Invalid or corrupt jarfilesbt/sbt-launch-0.13.6.jarmake: *** [t原创 2015-10-14 10:07:54 · 10735 阅读 · 0 评论 -
Spark1.5.1源码(Scala 2.11.7)的编译步骤
在编写spark程序的过程中,如果以master=local的方式是可以正常搞定的,然而如果将master设置为spark集群的方式则总是报各种错,通过源码查看,主要是AKKA通信与序列化之间的问题,而其核心原因是scala版本不匹配的问题。默认从apache官网下载的BIN包只支持2.10的,而2.11版本的还需要自己搞定。看了官网说明,主要有两种编译方式,一种是MVN,另一种SBT原创 2015-10-09 21:26:30 · 1516 阅读 · 0 评论 -
分类解读Spark下的39个机器学习库
转自小象学院的文章(http://xxwenda.com/article/584),后续准备逐个试验一下。当然有不少已经测试过的。Apache Spark 本身 1.MLlibAMPLabSpark最初诞生于伯克利 AMPLab实验室,如今依然还是AMPLab所致力的项目,尽管这些不处于Apache Spark Foundation中,但是依然在你日常的github项目中享转载 2015-11-05 09:01:36 · 4647 阅读 · 0 评论 -
大数据并行处理框架介绍
(仅上传了一部分的课件PPT)。原创 2015-10-30 10:55:29 · 2184 阅读 · 0 评论 -
Spark 1.5.2(Scala 2.11)版本的编译与安装
Spark于11月9号又将几个BUG解决之后,release一个较新的版本。作为spark的追随者,于是开始重新进行spark的编译。有了前面的编译经验和之前下载好的java类包,花了大概一分钟就编译妥当,于是重新部署配置一下,马上OK。简直是高效率。对于scala的编译,还是只需要一条语句。build/sbt -Dscala=2.11 -Pyarn -Phadoop-2.原创 2015-11-16 20:46:08 · 2408 阅读 · 0 评论 -
spark mlib中机器学习算法的测试(SVM,KMeans, PIC, ALS等)
在学习spark mlib机器学习方面,为了进行算法的学习,所以对原有的算法进行了试验。从其官网(http://spark.apache.org/docs/latest/mllib-guide.html)上进行了相关文档的介绍学习,并通过其给定的例子包中相关进行测试。(1)SVM测试(SVMwithSGD,要知道在mahout中都不支持SVM的)(2)Kmean原创 2015-11-03 10:28:49 · 2705 阅读 · 0 评论 -
Ubuntu环境下Redis的安装与JAVA连接测试
最近由于想测试一下内存数据库的性能,于是找了KV类中最普遍的Redis进行测试。首先需要安装一下,将安装过程在此记录一下。1.下载最新版本代Redis (http://download.redis.io/releases/)2.1 下载下来的是压缩包,解压得到文件包redis-3.0,62.2 进入解压之后的目录,进行编译sudo make原创 2016-01-07 22:49:44 · 1347 阅读 · 0 评论 -
基于spark的自然语言处理包集成和测试(命名实体识别)
做文本分析挖掘肯定离不开自然语言处理,以前就完全掌握过stanford的NLP工具包,里面是非常强大的,特别其支持多语言的自然语言处理,对话题模型、实体关系挖掘都有现成的产品。看到网上有人做了spark + NLP结合的东东,于是自己也想试验一下。利用stanford nlp 3.6.0最新的进行了测试,对20news的文章进行命名实体抽取实验,这个过程还是非常简单的,其原理就是将每个文档原创 2016-01-06 21:51:47 · 3682 阅读 · 1 评论 -
Spark NMF(非负矩阵分解)算法实现与测试
非负矩阵分解定义为:找到非负矩阵与使得。在计算中等式两者很难完全相等。在计算中往往是根据某更新法则迭代更新出两个乘子,当上式左右两端的距离(如欧式距离)满足我们设定的大小,停止迭代。非负矩阵分解NMF算法应用十分广泛,如图像处理分析,推荐系统,图计算等...spark 目前并部支持NMF算法.根据其原理,可以利用graphx与矩阵的方式来实现迭代获取H和W矩阵.原创 2016-01-06 20:09:13 · 2683 阅读 · 2 评论 -
Spark 1.6.0 (Scala 2.11)版本的编译与安装部署
2016年元月4号, spark 在其官网上公开了1.6.0版本,于是进行下载和编译.有了前面的编译经验和之前下载好的java类包,花了大概一分钟就编译妥当,于是重新部署配置一下,马上OK。简直是高效率。对于scala的编译,还是只需要一条语句。build/sbt -Dscala=2.11 -Pyarn -Phadoop-2.6 -Phive -Phive-thrift原创 2016-01-06 09:43:13 · 5230 阅读 · 0 评论 -
Spark实现HIVE统计结果导入到HBase操作
由于HIVE更新的机制极其不适应SPARK环境,于是利用HBase来执行HIVE中某些统计结果的更新。首先要做的是实现Spark + Hive访问,得到RDD,再将这个RDD导入到HBase中操作。然而网上关于这一块目前资料还真很少。但是其原理总体上来说是非常简单的。步骤主要是两步:(1)开启hive连接器,实现spark + hive的访问,得到dataframe对象。原创 2015-12-31 11:34:54 · 4711 阅读 · 1 评论 -
Spark访问HBase的Eclipse代码实现
Hbase是一个列式数据库,从其本质上来看,可以当做是一个数据源,而Spark本身又可以进行Hbase的连接,访问数据并进行查询。为了跟之前的程序对接,可以采用spark +hbase来实现数据的迁移和处理分析。因此小做了个实验测试一下。(1) 建立scala project,导入hbase下的相关lib,当然这里面所需要的lib不多。只需要几个hbase开头的jar包即可原创 2015-12-29 14:48:37 · 1779 阅读 · 0 评论