自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 Java爬虫实践:Jsoup+HttpUnit爬取今日头条、网易、搜狐、凤凰新闻

0x0 背景最近学习爬虫,分析了几种主流的爬虫框架,决定使用最原始的两大框架进行练手: Jsoup&HttpUnit 其中jsoup可以获取静态页面,并解析页面标签,最主要的是,可以采用类似于jquery的语法获取想要的标签元素,例如://1.获取url地址的网页htmlhtml = Jsoup.connect(url).get();// 2.jsoup获取新闻<...

2018-06-08 10:09:34 12747 33

原创 java命令行添加外部文件到classpath,从而实现读取外部配置文件

两种方法: 1. java -Xbootclasspath/a:/etc/hadoop/conf:/etc/hive/conf -jar example.jar 2. java -cp /etc/hadoop/conf:/etc/hive/conf:./example.jar example.Main.class 注意事项: (1)-Xbootclasspath/a:要在-jar之前 (2

2018-05-10 12:11:59 8258

原创 Spark加载hadoop配置原理

0x0 背景最近为了将hadoop&hive的五大配置文件,即:core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xmlhive-site.xml从项目中(classpath)移到项目外(任意位置),研究了spark启动过程的源码,在此记录一下。0x1 Hadoop及Hive获取默认配置过程Hadoop有一个类 Co

2018-05-09 10:48:46 5597 2

原创 java调试Kerberos,输出登陆信息

在代码中添加: System.setProperty(“sun.security.krb5.debug”, “true”);

2018-05-08 16:39:52 4688 2

原创 Windows下Spark调用Hive报错:java.io.IOException: 拒绝访问。

错误信息如下:18/04/27 10:36:33 INFO SessionState: Created local directory: C:/Users/GUOXIA~1.HDS/AppData/Local/Temp/c5c4c419-58fb-4b84-b84e-c6c972255f12_resources18/04/27 10:36:33 INFO SessionState: Crea...

2018-04-27 10:45:39 3195

原创 CDH集群添加Kerberos并使用Java代码调用HDFS和Spark on YARN

0x0 背景由于CDH默认的权限管理机制过于简单,不能够保证HADOOP集群的安全性,因此,引入了Kerberos作为安全管理服务。0x1 安装kerberos服务CDH提供了关于整合kerberos服务的向导,在整合kerberos之前,必须要有kerberos服务。下面,介绍一下如何安装kerberos服务。 1. 安装kerberos server和kdc(Key Dist...

2018-04-12 21:58:50 3919

原创 使用REST接口调用Spark——Apache Livy使用笔记

0x0 Livy安装与运行登录官网:http://livy.incubator.apache.org/ 下载最新版 livy。 1. 解压 2. 配置:在conf/livy-env.sh中添加:export SPARK_HOME=path/to/sparkexport HADOOP_CONF_DIR=/etc/hadoop/conf进入bin文件执行#前台模式,...

2018-04-09 16:24:40 7307

原创 MapReduce框架笔记——Shuffle过程详解

0x0 背景map-reduce是hadoop自带的计算框架,虽然现在大多数项目已经不采用该框架进行计算(Spark等基于内存的计算框架效率更高),但是他的原理还是值得进行研究的。map-reduce框架核心就是shuffle的过程,下面记录一下关于shuffle的理解。

2018-04-03 16:43:20 259

原创 Spring or SpringBoot项目整合spark日志冲突解决

去除掉项目中所有的slf4j <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion>

2018-04-03 09:57:29 1584

原创 CDH安装激活不了

我是把hosts文件中第一行中的主机名称去掉就好了!!!!!不知道具体原因!

2018-04-02 17:30:16 3821

原创 Kafka学习笔记:Java操作Kafka

kafka笔记

2018-03-29 15:45:11 2046

原创 Hadoop和Spark设置用户访问hdfs

简单记录一下,以备不时之需:1.对于hadoop而言如果hadoop没有启Kerberos或者从Kerberos获取的用户为null,那么获取HADOOP_USER_NAME环境变量,并将它的值作为Hadoop执行用户。如果我们没有设置HADOOP_USER_NAME环境变量,那么程序将调用whoami来获取当前用户,并用groups来获取用户所在组。所以可以设置环境变量:export HADOOP

2018-03-27 11:48:38 12565

原创 Spark求平均值的三种方法

方法一:利用groupByKey //求平均 方法一: groupByKey textFile.mapToPair(line -&gt; new Tuple2&lt;&gt;(line.split(" ")[0], Integer.parseInt(line.split(" ")[1]))) .groupByKey() ...

2018-03-06 11:23:53 24498 1

原创 Spark中POJO与Dataset相互转换

0x0 Dataset转POJO方法:将查询出的结果转为RDD将RDD创建为DataFrame,并传入schema参数调用as方法,将Dataset转为相应的POJO Dataset调用collectAsList()方法代码如下:1.表结构+--------+---------+-------+|col_name|data_type|comment|+...

2018-03-05 15:26:06 5135 1

原创 Spark动态资源分配

0x0 介绍再java中使用SparkSession来执行spark任务在代码编写上很方便,但是有个问题:SparkSession关闭后无法再次开启,这导致我们会一致占用申请到的Spark集群资源(包括内存和CPU),为了优化这一问题,笔者采用两种方式: 一、 采用SparkSubmit来提交任务,从而达到每次执行完JOB就释放资源,但是有个弊端:无法自由监控JOB执行过程; 关于编程式提...

2018-02-28 16:17:20 1121

原创 CarbonData跨库查询异常BUG分析与解决

0x0 背景同事最近发现CarbonData跨库多表联查时会报异常、

2018-02-25 14:33:13 605 1

原创 使用JAVA代码实现编程式提交Spark任务

0x0 背景介绍项目中使用SparkSession来执行任务,出现一个问题:SparkSession开启后会一直占用集群的资源(CPU和内存),而且,SparkSession关闭后,无法再次开启(报异常)。为了解决以上问题,只有采用Java代码模拟Spark Submit来提交任务到集群,从而实现动态调用spark。0x1 方法查看多方资料,发现三个方法,分别是: 1. ...

2018-02-24 14:42:23 10245 3

原创 Carbondata时间戳Timestamp格式差13个小时

0x0 异常将CSV文件load进table后,发现TIMESTAMP类型的列时间都对不上,正好相差13个小时0x1 分析原因UBUNTU服务器的时区有问题(美国东部时区),JDK8在获取系统时间时相应出错,从而导致CarbonData转换Timestamp出错!0x2 解决方法修改时区: 修改 /etc/timezone文件(sudo vi /etc/timezone) 内容为:Asia/S

2018-02-10 09:13:34 2166

原创 SparkSQL创建数据库报错

错误信息org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Unable to create database path file:/D:/Java_Tools/spark/bin/spark-warehouse/tes...

2018-02-07 14:36:02 4539

原创 使用spark-shell操作Carbondata

0x0 准备下载spark,解压 下载carbondata并编译 将编译好的carbondata jar包放入spark的jars文件夹中如果要对HDFS的文件进行增删改,最好加入环境变量:HADOOP_USER_NAME=hdfs可以启动spark-shell了0x1 以local模式启动spark-shell1. 启动脚本./bin/spark-shell2. scala语句import o

2018-02-06 21:51:51 837

原创 carbondata 1.2.0无法对分区的表进行UPDATA操作

版本问题,当前版本1.2及以下的版本对于HASH分区和RANGE分区的carbondata数据无法update (经测试,对于一条一条插入的数据可以update,但是对于load进表的数据无法update)1.3会加入这个特性================================== **经测试 1.3仍未加入该特性!这群骗子**...

2018-02-05 09:51:35 519

原创 carbondata+spark环境搭建及测试

0x0 介绍Carbondata:Apache CarbonData is an indexed columnar data format for fast analytics on big data platform, e.g. Apache Hadoop, Apache Spark, etc.carbondata是一种带索引的列型数据格式,用于大数据快速分析平台例如:hadoop、spark等。

2018-01-27 18:09:20 3088 3

原创 Carbondata并发修改表问题

最近在使用carbondata,业务逻辑中需要实现同时、多个线程共同写入一个表中,即并发写入。 看了官方文档,关于并发操作表的描述特别少: carbon.lock.typeThis configuration specifies the type of lock to be acquired during concurrent operations on table. There are fol

2018-01-27 18:00:00 992 4

原创 Spark的StandAlone运行模式环境搭建

一、Spark集群搭建版本:spark-2.1.0-bin-hadoop2.6安装:将spark解压到各节点的/opt目录下配置:(各节点配置相同)1. 进入spark配置文件夹:cd /opt/spark/conf2. 将slaves.template修改为slaves:mv slaves.template slaves3. 修改slaves文件,添加spark集

2018-01-25 14:24:57 656

原创 Carbondata转csv文件异常处理

将carbondata数据保存为csv文件,可以通过以下方式操作/** * 将查询结果Dataset保存为csv文件 * @param sql 查询语句 * @param path csv存放路径(相对HDFS的路径,例如:/opt/csvFile) * @param delimiter csv文件分隔符,默认为逗号 delimiter = ","; ...

2018-01-25 14:20:32 441

原创 使用java的lambda表达式实现word count的两种方法

采用java8的lambda表达式实现word count的两种方法

2018-01-04 21:09:20 5923

原创 Struts+Spring+SpringDataJpa向上抽取

一、Action向上抽取BaseActionpackage com.fly.bos.web.action;import java.io.IOException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.Arrays;import java.util.HashM

2017-12-27 19:43:36 259

原创 SpringMVC处理PUT请求获取不到参数——解决方案

添加一个过滤器:<filter> <filter-name>HttpPutFormContentFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> <filter-mappi

2017-12-27 14:32:47 1415

原创 Maven项目使用MyBatis Generator插件生成POJO和Mapper代码

0x0 前言MyBatis Generator可以帮助我们根据数据库表生成相应的实体类和Mapper,这大大减少了我们的代码量,提升了开发效率。在Eclipse下安装一个MyBatis generator插件就就可以完美生成pojo和mapper;在idea下虽然也有相应的插件工具(功能也比较强大),但是如果我们想用原生的mybatis generator生成怎么做呢?官方的MyBatis...

2017-12-24 15:02:01 364

原创 采用原生JSP实现页面静态化技术

0x0 前言最近学习了页面静态化技术。在MVC框架中,该技术使用freemarker、velocity等模板引擎,通过Model获取相应的对象,进而生成相应的html页面(也就是View),然后,将生成的html页面缓存起来,下次如果客户端访问相同页面,那么可以直接从缓存中获取页面返回,从而避免了查询数据库等操作,提升了访问效率。话说回来,jsp本身也是一种模板引擎,利用el表达式也可以根据动态内容

2017-12-11 21:40:21 1012

原创 使用Redis实现锁机制

最近看了一些关于锁的文章,下面记录一下自己的理解0x0 原理锁是为了解决多线程并发修改或访问同一个资源而设计的。锁的种类有许多种,以我当前所了解的锁,除了乐观锁外,其他锁的原理大同小异: 即在各个线程都能访问的地方设置一个标记来记录某个资源的访问权限。 例如,存在某个资源Target,有A,B,C三个线程去修改Target的值,我们可以设置一个变量boolean isAccessible = t

2017-12-04 22:59:14 4448 3

原创 2017年最新JRebel+Eclipse热部署教程

在开发web项目时,常常修改很少的代码(例如配置文件或java代码)就需要重启服务器,来查看修改后的效果。如果项目比较大,重启一次服务器几十秒,这简直就是噩梦!好在JRebel这个神器的存在,使得我们可以在修改代码后进行热部署,即不需要重启服务器,就可以查看修改后的效果!下面记录一下JRebel的安装教程和使用方法。Eclipse下JRebel的安装和使用

2017-11-24 21:47:54 13104 1

原创 LeetCode第三题的一个O(n)方法

题目: Given a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the answer is “abc”, which the length is 3.Given “bbbbb”, the answer is “b”, with t

2017-11-22 13:55:40 271

原创 Java模拟闭包实现属性封装

最近看了js的闭包,仔细想了想,感觉java也可以模拟js的闭包特性实现属性封装,不过看似没什么卵用。下面,首先定义一个Person类,该类中并没有任何属性,我们将属性 pname和page放到一个静态方法中,作为局部变量,对!你没有看错,局部变量!然后用lambda表达式来set或get 这些局部变量。最后将这些lambda表达式(匿名内部类)放入一个map中做为返回值返回。具体代码如下:pack

2017-11-20 10:17:10 282

原创 采用Java实现类似于闭包的用法

今天看javascript高级用法中的闭包,可以实现隐藏变量,于是想利用java模拟一下。一共做了3个类:1. 实体类 User: 包含姓名(Name)和年龄(Age) 2. 测试类 TestDemo: Main函数所在的类 3. 函数式接口 IncreaseAge: 内部只有一个increaseAge方法,用于增加User的年龄 上代码:User类package com.fly.dom

2017-11-18 23:57:19 637

原创 Java中Lambda表达式的学习

先来个小例子看下,有个直观的了解。//1.首先,要定义一个函数式接口//即Functional Interface,就是只有一个抽象方法的接口。public interface Func { double func(double x);}//2.测试public void testLambda() { //定义一个数学函数:f(x) = x^2 //如果用匿名内部类的话

2017-11-08 16:25:37 233

原创 Hibernate5下配置Druid连接池

先上配置文件:<!--数据源信息 for Druid--> <property name="driverClassName">com.mysql.jdbc.Driver</property> <property name="url">jdbc:mysql:///hibernate?useSSL=false</property> <property na

2017-10-27 22:24:39 4305 1

原创 使用DBUtils、动态代理以及注解实现事务控制

主要思路:使用ThreadLoacal来传递Connection使用动态代理来增强service层的方法,对于CUD方法添加事务通过注解+反射来扫描方法是否开启事务代码C3P0工具类package com.fly.utils;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource

2017-10-24 21:40:23 466

原创 用反射、注解及DBUtils对Dao层抽取

今天闲着无聊,用反射、注解及DBUtils对Dao层进行了抽取,实现了对基础CRUD的操作,上代码:

2017-10-21 22:49:24 544

原创 生产者消费者注意细节

今天听了马老师的生产者消费者问题,里面提到一些细节,以前写的时候没注意,特地记录一下:class Pool<T> {private final int MAX = 20;private volatile int top = 0;List<T> list = new ArrayList<>(MAX);public synchronized void put(T e) throws Interrup

2017-07-24 14:15:57 379

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除