<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Just Do IT]]></title><description><![CDATA[但行好事，莫问前程！]]></description><link>https://blog.youkuaiyun.com/NextAction</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; NextAction]]></copyright><item><title><![CDATA[【Hive】自定义函数从编写到应用的整个流程（以UDF为例）]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/138229063</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/138229063</guid><author>NextAction</author><pubDate>Fri, 26 Apr 2024 20:12:04 +0800</pubDate><description><![CDATA[【代码】【Hive】自定义函数从编写到应用的整个流程（以UDF为例）]]></description><category></category></item><item><title><![CDATA[【SQL】SQL语句执行顺序]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/138199554</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/138199554</guid><author>NextAction</author><pubDate>Thu, 25 Apr 2024 21:05:24 +0800</pubDate><description><![CDATA[用一个例子说明SQL语句在逻辑执行计划时候的执行顺序，实际物理计划可能由于不同数据库优化策略的不同而略有差异。今天写一个相当基础的知识点，主要是之前对这块比较模糊，也没有细究，这次一并记录一下。]]></description><category></category></item><item><title><![CDATA[【Hive】UDF、UDAF]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130262180</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130262180</guid><author>NextAction</author><pubDate>Thu, 20 Apr 2023 11:26:13 +0800</pubDate><description><![CDATA[UDF（User-Defined-Function） 一进一出编程步骤：​        （1）继承org.apache.hadoop.hive.ql.UDF​        （2）需要实现evaluate函数；evaluate函数支持重载；注意事项：​        （1）UDF必须要有返回类型，可以返回null，但是返回类型不能为void；​        （2）UDF中常用Text/LongWritable等类型，不推荐使用java类型；]]></description><category></category></item><item><title><![CDATA[【Kafka】Kafka为什么快？]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130220845</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130220845</guid><author>NextAction</author><pubDate>Tue, 18 Apr 2023 15:08:08 +0800</pubDate><description><![CDATA[Kafka之所以快的原因有三个：顺序读写、页缓存、零拷贝。]]></description><category></category></item><item><title><![CDATA[【Kafka】集群架构]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130218051</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130218051</guid><author>NextAction</author><pubDate>Tue, 18 Apr 2023 11:47:34 +0800</pubDate><description><![CDATA[每个分区有且仅有一个leader，负责消息的读写，当leader挂掉后，由zookeeper从ISR列表中选举新的leader。消费者组，每个消费者属于一个消费者组，每条消息只能被同一消费者组中的一个消费者消费。主题，Kafka可以有多个主题，并支持多个生产者和消费者订阅同一主题。分区，主题中存放多个分区，分区内消息有序，每个分区可以有多个副本。负责管理集群，如：增加、删除topic，监听broker等。生产者，将消息发布到Kafka集群的终端或客户端。消费者，从Kafka分区中取用消息的终端或服务。]]></description><category></category></item><item><title><![CDATA[【Kafka】概述]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130217511</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130217511</guid><author>NextAction</author><pubDate>Tue, 18 Apr 2023 11:27:31 +0800</pubDate><description><![CDATA[Kafka最早由Linkedin公司开发，是一个分布式、分区的、多副本的、多订阅者的，基于zookeeper的消息系统，可以用于消费web日志，消息服务等。Kafka可以有多个主题（topic），且每个主题包含多个分区（partition），分区分布在不同的主机（broker）中。Kafka收发消息非常迅速，Kafka每秒可以处理几十万条消息，最低延迟只有几毫秒。Kafka采用发布-订阅模式，即：生产者往队列写消息，消费者从队列取消息。Kafka允许数据持久化到磁盘中，并支持数据备份以防止丢失。]]></description><category></category></item><item><title><![CDATA[【Kafka】生产者和消费者API开发]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130201634</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130201634</guid><author>NextAction</author><pubDate>Mon, 17 Apr 2023 15:45:29 +0800</pubDate><description><![CDATA[生产者代码中主要通过KafkaProducer类生成生产者对象，传入Properties配置的参数。通过KafkaConsumer类创建消费者对象，可以设置自动或者手动提交offset。注意send方法可以同步也可以异步，异步时需要实现Callback接口。]]></description><category></category></item><item><title><![CDATA[【Spark】spark读取、插入Mysql]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130132632</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130132632</guid><author>NextAction</author><pubDate>Thu, 13 Apr 2023 17:40:16 +0800</pubDate><description><![CDATA[【代码】【Spark】spark读取、插入Mysql。]]></description><category></category></item><item><title><![CDATA[【Spark】RDD转换DataFrame（StructType动态指定schema）]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130129950</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130129950</guid><author>NextAction</author><pubDate>Thu, 13 Apr 2023 14:34:08 +0800</pubDate><description><![CDATA[首先通过StructType指定字段和类型，然后再将RDD和schema信息相映射。]]></description><category></category></item><item><title><![CDATA[【Spark】RDD转换DataFrame（反射机制）]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130128470</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130128470</guid><author>NextAction</author><pubDate>Thu, 13 Apr 2023 13:38:54 +0800</pubDate><description><![CDATA[Spark支持多种格式文件生成DataFrame，只需在读取文件时调用相应方法即可，本文以txt文件为例。]]></description><category></category></item><item><title><![CDATA[【Spark】RDD缓存机制]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/130102783</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/130102783</guid><author>NextAction</author><pubDate>Wed, 12 Apr 2023 11:42:34 +0800</pubDate><description><![CDATA[把RDD的数据缓存起来，其他job可以从缓存中获取RDD数据而无需重复加工。注意：调用这两个方法后并不会立刻缓存，而是有action算子触发时才会缓存。persist有多种缓存方式，如缓存到内存，缓存到磁盘等。cache只缓存到内存，且实际是调用了persist方法。]]></description><category></category></item><item><title><![CDATA[【Hive】解析字符串(类似array嵌套map结构)]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/115117609</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/115117609</guid><author>NextAction</author><pubDate>Tue, 23 Mar 2021 13:15:28 +0800</pubDate><description><![CDATA[背景
业务开展新活动，活动规则中有阶梯奖励，即：达到某个区间，奖励对应的金钱。
如：
成交1单，每单奖励0元；
成交2-4单，每单奖励100元；
成交5单以上，每单奖励200元；
业务库中以字符串的形式存放活动规则，举例如下：
[{"min":1,"money":0,"max":1},{"min":2,"max":4,"money":100},{"min":5,"money":200,"max":99999}]

解析思路
如果要按照某人成交单数，计算出应得奖励，则需要把上面的字符串解析为3列：min、ma]]></description><category></category></item><item><title><![CDATA[【Java】面向对象基本特性-封装]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/109556065</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/109556065</guid><author>NextAction</author><pubDate>Sun, 08 Nov 2020 10:27:57 +0800</pubDate><description><![CDATA[封装概述
面向对象编程是对客观世界的抽象，封装是对这个抽象的保护，避免外界直接操作抽象内部的隐藏对象。适当的封装让代码更易懂，也更安全。
封装的步骤

使用private关键字来修饰成员变量
对需要访问的成员变量，提供对应的一对get和set方法。

封装标准模板JavaBean
JavaBean是java语言编写类的一种标准规范。符合JavaBean的类，要求类必须是具体的和公共的，并且具有无参数的构造方法，提供用来操作成员变量的get和set方法。
public class className {
	/]]></description><category></category></item><item><title><![CDATA[【Spark】ip地址查询案例(城市热点图)]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/107679040</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/107679040</guid><author>NextAction</author><pubDate>Thu, 30 Jul 2020 00:39:12 +0800</pubDate><description><![CDATA[上图是一张很常见的城市热力图，像这样的图是如何绘制的呢？
其实，每个地区都有自己的经纬度和上网ip区段，可以通过解析上网日志中的ip，定位某个地区的客流量。
本篇文章主要介绍，如果通过解析上网日志，查找热门地区经纬度，并把统计数据插入Mysql表中。
数据准备
这里需要两份数据：

日志数据：20090121000132.394251.http.format


链接：https://pan.baidu.com/s/1luckcRUOpCDVmivLJ03XOQ
提取码：kroh


2. 城市ip段数据.]]></description><category></category></item><item><title><![CDATA[【IDEA】Command line is too long. Shorten command ... or also for Application default configuration]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/107678119</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/107678119</guid><author>NextAction</author><pubDate>Wed, 29 Jul 2020 23:30:41 +0800</pubDate><description><![CDATA[在工程的 .idea目录下打开 workspace.xml文件
在 &lt;component name="PropertiesComponent"&gt;标签下，添加：
&lt;property name="dynamic.classpath" value="true" /&gt;




]]></description><category></category></item><item><title><![CDATA[【Hive】性能调优 - map-side JOIN]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/107054921</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/107054921</guid><author>NextAction</author><pubDate>Wed, 01 Jul 2020 08:17:58 +0800</pubDate><description><![CDATA[Hive版本: hive-1.1.0-cdh5.14.2

概述
如果表关联时，有一张表很小，那么可以在大表通过mapper时将小表完全加载到内存中，Hive可以在map端完成关联过程，这就是所谓的map-side JOIN。
使用map-side JOIN可以省掉常规的reduce过程，从而提升Hive的效率。
Hive中有三个和map-side JOIN相关的参数：




参数
默认值




hive.auto.convert.join
true (Hive 0.11.0+)


hive.aut.]]></description><category></category></item><item><title><![CDATA[【Hive】性能调优 - EXPLAIN]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/107032528</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/107032528</guid><author>NextAction</author><pubDate>Tue, 30 Jun 2020 08:01:28 +0800</pubDate><description><![CDATA[Hive版本: hive-1.1.0-cdh5.14.2

用户提交HiveQL查询后，Hive会把查询语句转换为MapReduce作业。Hive会自动完成整个执行过程，一般情况下，我们并不用知道内部是如何运行的。但当查询遇到性能瓶颈时，就需要对HiveQL进行调优。
EXPLAIN是调优时查看执行计划的工具，执行计划可以清晰的告诉我们查询的stage、map、reduce等阶段的信息。
EXPLAIN的使用非常简单，只需要在正常HiveQL前面加上就可以了。
此时的HiveQL不会真正执行作业，只是基于.]]></description><category></category></item><item><title><![CDATA[【Hive】压缩格式]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/107011785</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/107011785</guid><author>NextAction</author><pubDate>Mon, 29 Jun 2020 06:41:39 +0800</pubDate><description><![CDATA[常见压缩格式




压缩方式
压缩比
压缩速度
解压缩速度
是否可分割




gzip
13.4%
21 MB/s
118 MB/s
否


bzip2
13.2%
2.4MB/s
9.5MB/s
是


lzo
20.5%
135 MB/s
410 MB/s
是


snappy
22.2%
172 MB/s
409 MB/s
否


压缩格式对应的编/解码器




压缩格式
对应的编/解码器




DEFLATE
org.apache.hadoop.io.compress.DefaultCode]]></description><category></category></item><item><title><![CDATA[【Hive】hive表的文件存储格式]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/106971497</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/106971497</guid><author>NextAction</author><pubDate>Fri, 26 Jun 2020 18:53:18 +0800</pubDate><description><![CDATA[在Hive中，文件的存储格式主要有：TEXTFILE、SEQUENCEFILE、ORC、PARQUET。
其中，TEXTFILE、SEQUENCEFILE是基于行存储，ORC、PARQUET基于列存储。
实际生产环境，使用ORC和PARQUET的情况比较多。
1. 行存储和列存储

上图中左边为逻辑表，右上为行存储，右下为列存储。
当查询结果为一整行的时候，行存储效率会高一些；当查询表中某几列时，列存储的效率会更高。
在对数据的压缩方面，列存储比行存储更有优势，所以列存储占用空间相对小一些。
2. TEXT]]></description><category></category></item><item><title><![CDATA[【Hive】表生成(Table-Generating)函数]]></title><link>https://blog.youkuaiyun.com/NextAction/article/details/106966229</link><guid>https://blog.youkuaiyun.com/NextAction/article/details/106966229</guid><author>NextAction</author><pubDate>Fri, 26 Jun 2020 10:52:51 +0800</pubDate><description><![CDATA[Hive版本: hive-1.1.0-cdh5.14.2

1. 列转行函数：explode
(1) 输入类型为array
语法：explode(ARRAY a)
返回值：T
描述：展开array，其中每个元素占一行
0: jdbc:hive2://node03:10000&gt; select explode(array('A', 'B', 'C'));
+------+--+
| col  |
+------+--+
| A    |
| B    |
| C    |
+------+--+
(2).]]></description><category></category></item></channel></rss>