存档

作者存档

【Scala】Scala使用json4s解析和生成json字符串

2016年12月20日 评论已被关闭

最近需要解析一个日志文件,其中数据有用分隔符分开的,有json数据,最后要生成一个统一的json字符串。正好,通过这个小项目熟悉下scala的json解析,或者是json4s框架。

首先介绍下json4s:
At this moment there are at least 6 json libraries for scala, not counting the java json libraries. All these libraries have a very similar AST. This project aims to provide a single AST to be used by other scala json libraries.

At this moment the approach taken to working with the AST has been taken from lift-json and the native package is in fact lift-json but outside of the lift project.

翻译成中文:

现在,至少有6个json库用于scala,不包括java的json库。所有这些库具有非常相似的AST。这个项目旨在提供一个统一的AST供其他scala的json库使用。

现在,使用AST的方法是从lift-json采用,本地包实际上是lift-json,但在lift项目之外。

AST是抽象语法树(Abstract Syntax Tree)的意思

【cloudera】【scala】让maven项目同时编译java和scala代码,支持多个源文件

2016年12月15日 评论已被关闭

这次写一个大数据项目,编译和发布的时候遇到点问题,在这里记录下。

首先maven项目的结构大家应该都熟悉:

然后大部分编写scala代码会在main文件夹下建立一个scala文件夹,把包和源代码放在其中,我也是这样。

然后问题来了,我们的java文件夹中放置java代码,scala文件夹中放置scala代码,甚至一个文件夹中会混合java和scala代码,但是编译打包的时候(mvn install)会出现各种问题。然后我上网找到了各种解决方案。

【Scala函数式编程】【习题】从curry(柯里化)一次看明白scala的函数定义、匿名函数和高阶函数

2016年11月29日 评论已被关闭

相信初入门scala的同学对scala的一般函数定义还是能了解的,但是碰到参数是函数、返回类型是函数或者返回类型可能有返回函数的函数的函数之类的。
首先明确的是柯里化的定义,把一个接受多个参数的函数,变成只接受一个参数的函数。
你可能会疑问,一个参数怎么替代多个参数,其实当它接受完一个参数后,返回一个新的函数,新函数仍然接受一个参数,然后继续返回另一个,一直到所有的参数接受完毕。

到这里如果你不明白柯里化的定义你应该去谷歌下,先大致明白定义,至于为什么要用,先不管,先会用。
我一直不喜欢直接强记硬背严格的格式定义,这样不但痛苦,还很容易忘记,不能真正理解。反而在用的时候发现问题,提出疑问,去探索和尝试的学习和理解效率更高。

前者是学堂式的填鸭教育,后者是充满浪漫主义精神的冒险。废话不多说,入正题。

【cloudera】CDH集群的几个错误处理方式

2016年9月27日 评论已被关闭

错误1:Web页面受管理的主机只有一台或几台交替显示(不同时)

原因:这个错误的发生是因为在分发cloudera agent客户端的时候分发的是运行过的cloudera agent,因为agent会在/opt/cloudera-manager/cm-5.8.1/lib/cloudera-scm-agent下面建立uuid文件,唯一标识本agent,如果你分发agent中包含了这个uuid文件(如图):

agent-uuid

那么当agent启动后与cloudera server通讯的时候使用相同的uuid,server会把第二台机器覆盖掉第一台,因为它们具有相同的uuid。

解决:删除掉/opt/cloudera-manager/cm-5.8.1/lib/cloudera-scm-agent下的文件,重启agent

【cloudera】修改cloudera manager(CDH)的默认的web UI端口7180为其他端口

2016年9月27日 评论已被关闭

在生产环境部署cdh集群,在装完cloudera manager后无法通过http://host:7180访问cloudera manager的管理页面,经检查server和agent都正常的启动,无错误。后经过和运维人员联系,得知生产环境的端口只开放了5501-5507八个端口,除此之外的端口不对外开发(但是对局域网特定区域开放,要不然集群所用端口都得修改)。

经官方文档查询,修改7180默认端口是在登录进7180的管理web页面后修改的,但现在根本无法登录。后来找了一遍配置文件也未发现配置7180端口的地方。后来在测试环境通过web管理页面修改了默认的7180端口,逐个排查发现7180端口的配置是在数据库中。

【cloudera】Cloudera Manage全离线部署手册

2016年9月20日 评论已被关闭

Cloudera Manage全离线

部署手册V1.0.0

0.0版本功能清单
搭建Cloudera Manager管理集群,作为整个大数据平台的管理集群

数据库执行脚本

三、 Cloudera Manager部署

Cloudera Manager需要的文件:

Cm离线安装包:cloudera-manager-el6-cm5.8.1_x86_64.tar.gz
Cdh离线parcel包:CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel、CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha、json
其他依赖软件安装包

JDBC: mysql-connector-java-5.1.30.jar(取决于你使用的数据库)
JDK:oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
Mysql数据库安装包以及其依赖

安装之前的准备
关闭防火墙和SELinux

【一点一滴】在JAVA程序中移动HDFS上的文件或文件夹

2016年9月1日 评论已被关闭

Hadoop的FileSystem的API没有提供move方法移动hdfs上面的文件,只有moveFromLocalFile和moveToLocalFile两个方法,提供本地文件上传到hdfs和从hdfs下载文件到本地系统。

经研究FileSystem的rename(Path src, Path dst)方法可实现文件的移动需求,假如现在hdfs上面有一个文件”/ab/readme.txt”,需要移动到”/cde/”路径之下,可以使用

FileSystem.rename(new Path(“”/ab/readme.txt””), new Path(“/cde/readme.txt”))

实现文件在hdfs上的移动

【DEBUG】Tomcat+Spring下@Scheduled注解定时任务执行两次的解决方案

2016年7月19日 评论已被关闭

因为Web项目需要每天定时推送日志到Hadoop之上,遂使用@Scheduled注解编写一个定时任务以达到目的。奈何近一年研究Hadoop生态技术过多,Spring框架和Tomcat其本质了解不够深入,出现了定时任务执行两次的现象。在了解了相关技术后,觉着问题虽然简单,但侧面可以学习到好多Tomcat和Spring其本质的东西,遂记录下来。

Spark的使用

2015年11月18日 评论已被关闭

1.开发环境     OS:         CentOS 6.5  JDK:        1.7 […]

分类: 我的哲学世界 标签:

Spark1.5.0的简介和环境配置

2015年11月18日 评论已被关闭

1.Spark简介 1.1 Spark与Hadoop联系 1.1.1 Hadoop以及其问题 Hadoop就是 […]