<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[YYDS_emmm的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/YYDS_emmm</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; YYDS_emmm]]></copyright><item><title><![CDATA[MapReduce]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/131655781</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/131655781</guid><author>YYDS_emmm</author><pubDate>Tue, 11 Jul 2023 11:01:25 +0800</pubDate><description><![CDATA[MapReduce


]]></description><category></category></item><item><title><![CDATA[解决new Gson().toJson(object) null值不进行转换问题]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/130244631</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/130244631</guid><author>YYDS_emmm</author><pubDate>Wed, 19 Apr 2023 15:08:34 +0800</pubDate><description><![CDATA[在对result进行json转换时，new Gson().toJson(result)，遇到null值不进行转换问题。使用GsonBuilder创建Gson即可解决，代码如下。]]></description><category></category></item><item><title><![CDATA[Flink练习 当天活跃用户]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/127122462</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/127122462</guid><author>YYDS_emmm</author><pubDate>Fri, 30 Sep 2022 14:05:00 +0800</pubDate><description><![CDATA[Flink求当天uv]]></description><category></category></item><item><title><![CDATA[Flink工程 pom.xml]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/127119289</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/127119289</guid><author>YYDS_emmm</author><pubDate>Fri, 30 Sep 2022 10:34:07 +0800</pubDate><description><![CDATA[pom.xml]]></description><category></category></item><item><title><![CDATA[HIVE小文件合并]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/126281939</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/126281939</guid><author>YYDS_emmm</author><pubDate>Thu, 11 Aug 2022 11:31:13 +0800</pubDate><description><![CDATA[代码】HIVE小文件合并。]]></description><category></category></item><item><title><![CDATA[Python numpy工具集]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120352547</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120352547</guid><author>YYDS_emmm</author><pubDate>Fri, 17 Sep 2021 18:46:08 +0800</pubDate><description><![CDATA[Python numpy工具集
numpy 是居于多维数组，进行处理和计算的工具集
创建矩阵
import numpy as np
np.array((...)|[....])

np.array(dataframe.select(...).collect())

#指定区间
np.arrange([begin=0,end=10,step=5]) # 不包含end,开始、步长可以不设置
	np.arrange(0,10,5)   =&gt; [0,5]
	np.arrange(0,10)     =&gt;]]></description><category></category></item><item><title><![CDATA[spark中coalesce、repartition和partitionBy的区别]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120270392</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120270392</guid><author>YYDS_emmm</author><pubDate>Mon, 13 Sep 2021 16:52:05 +0800</pubDate><description><![CDATA[spark中coalesce、repartition和partitionBy的区别
coalesce

false:不产生 shuffle
true:产生 shuffle
如果重分区的数量大于原来的分区数量,必须设置为 true,否则分区数不变
增加分区会把原来的分区中的数据随机分配给设置的分区个数


repartition
repartition实际上就是coalesce
repartition(int n) = coalesce(int n, true)，也就是说，repartition默认就实现了s]]></description><category></category></item><item><title><![CDATA[ClickHouse的表引擎]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120157452</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120157452</guid><author>YYDS_emmm</author><pubDate>Tue, 07 Sep 2021 15:49:20 +0800</pubDate><description><![CDATA[ClickHouse的表引擎
表引擎是 ClickHouse 的一大特色。可以说， 表引擎决定了如何存储表的数据。 包括：

数据的存储方式和位置，写到哪里以及从哪里读取数据。
支持哪些查询以及如何支持。 并发数据访问。
索引的使用（如果存在）。
是否可以执行多线程请求。 数据复制参数。
表引擎的使用方式就是必须显式在创建表时定义该表使用的引擎，以及引擎 使用的相关参数。

特别注意：引擎的名称大小写敏感。
分类：

Log 系列表引擎
TinyLog 是 Log 系列引擎中功能简单、性能较低的引擎。它的存]]></description><category></category></item><item><title><![CDATA[Python3.6.6 安装]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120121402</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120121402</guid><author>YYDS_emmm</author><pubDate>Sun, 05 Sep 2021 21:07:49 +0800</pubDate><description><![CDATA[Python3.6.6 安装
#安装python 依赖
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
#解压重命名
tar -zxvf Python-3.6.6.tgz -C /opt/software/python/
cd /opt/software/python
mv Python-3.6.6/ python366
#编译
cd /opt/software/python/p]]></description><category></category></item><item><title><![CDATA[在Hive中使用自定义UDF]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120121057</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120121057</guid><author>YYDS_emmm</author><pubDate>Sun, 05 Sep 2021 20:57:02 +0800</pubDate><description><![CDATA[在Hive中使用自定义UDF
1. pom.xml文件中增加Hive包的依赖
&lt;dependency&gt;
 &lt;groupId&gt;org.apache.hive&lt;/groupId&gt;
 &lt;artifactId&gt;hive-exec&lt;/artifactId&gt;
 &lt;version&gt;1.1.0&lt;/version&gt;
&lt;/dependency&gt;

2. Java示例代码如下:
package com.utils;

import o]]></description><category></category></item><item><title><![CDATA[FlinkSQL 整合 Hive]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120112016</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120112016</guid><author>YYDS_emmm</author><pubDate>Sun, 05 Sep 2021 12:07:06 +0800</pubDate><description><![CDATA[FlinkSQL 整合 Hive
介绍
Flink 从 1.9 开始支持集成 Hive，不过 1.9 版本为 beta 版，不推荐在生产环境 中使用。
在 Flink1.10 版本中，标志着对 Blink 的整合宣告完成，对 Hive 的集成 也达到了生产级别的要求。
这里使用的 Flink 是 1.13.0，Hive 是 3.1.2。
Flink 与 Hive 的集成方式
Flink 与 Hive 的集成主要体现在以下两个方面:
1.持久化元数据 Flink 利 用 Hive 的 MetaStore 作 ]]></description><category></category></item><item><title><![CDATA[Flink 学习总结]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120064067</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120064067</guid><author>YYDS_emmm</author><pubDate>Thu, 02 Sep 2021 19:30:11 +0800</pubDate><description><![CDATA[Flink 学习总结
Flink特点

高吞吐、低延迟、高性能
支持 Event Time
支持有状态的计算
高度灵活的窗口计算
支持轻量级分布式快照Checkpoints

Flink和SparkStream对比♥♥♥
本质：

SparkStream 是以批处理技术为根本，将数据切成一个一个微小的批次从而实现流式处理（伪流处理）
Flink 是完全的流式处理，只要数据一来，就会马上对其进行处理

数据模型：

Spark采用RDD，SparkStreaming中的DStream也就是一组一组的小批次RD]]></description><category></category></item><item><title><![CDATA[Flink 的优化]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120049153</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120049153</guid><author>YYDS_emmm</author><pubDate>Wed, 01 Sep 2021 21:57:29 +0800</pubDate><description><![CDATA[Flink 的优化
配置进程参数
操作场景
Flink on YARN 模式下，有 JobManager 和 TaskManager 两种进程。在任务调 度和运行的过程中，JobManager 和 TaskManager 承担了很大的责任。 因而 JobManager 和 TaskManager 的参数配置对 Flink 应用的执行有着很大的 影响意义。用户可通过如下操作对 Flink 集群性能做优化。
操作步骤
（1）配置 JobManager 内存 JobManager 负责任务的调度，以及 TaskM]]></description><category></category></item><item><title><![CDATA[Spark Flink jar包依赖]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120034305</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120034305</guid><author>YYDS_emmm</author><pubDate>Wed, 01 Sep 2021 10:32:47 +0800</pubDate><description><![CDATA[Spark Flink jar包依赖
Spark
 &lt;properties&gt;
    &lt;scala.version&gt;2.12.10&lt;/scala.version&gt;
  &lt;/properties&gt;

&lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.scala-lang&lt;/groupId&gt;
      &lt;artifactId&gt;scala-library]]></description><category></category></item><item><title><![CDATA[Flink 的状态一致性]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120023471</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120023471</guid><author>YYDS_emmm</author><pubDate>Tue, 31 Aug 2021 19:01:15 +0800</pubDate><description><![CDATA[Flink 的状态一致性
什么是状态一致性
有状态的流处理，每个算子任务都可以有自己的状态。所谓的状态一致性， 其实就是我们所说的计算结果要保证准确。一条数据不应该被丢失，也不应该被 重复计算。在遇到故障时可以恢复状态，恢复以后得重新计算，结果应该也是完 全正确的。
状态一致性的分类
At-Most-Once（最多一次）：
当任务故障时，最简单的做法就是什么都不干，既不恢复丢失的数据，也不 重复数据。最多处理一次事件。数据可能会丢失。但是处理的速度快。
At-Least-Once（至少一次） ：
在大多数的]]></description><category></category></item><item><title><![CDATA[BroadcastState]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120022955</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120022955</guid><author>YYDS_emmm</author><pubDate>Tue, 31 Aug 2021 17:31:36 +0800</pubDate><description><![CDATA[BroadcastState
package org.example.broadcast_join

import java.sql.{Connection, DriverManager, PreparedStatement}

import com.alibaba.fastjson.JSON
import org.apache.flink.api.common.state.{MapStateDescriptor, ReadOnlyBroadcastState}
import org.apache.flin]]></description><category></category></item><item><title><![CDATA[Flink的时间特性和窗口计算]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120019576</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120019576</guid><author>YYDS_emmm</author><pubDate>Tue, 31 Aug 2021 16:33:31 +0800</pubDate><description><![CDATA[Flink的时间特性和窗口计算
时间特性
在 TableAPI 或者 SQL 要使用基于时间的操作，需要定义相关的时间语义和时 间数据来源的信息。所以，Table 可以提供一个额外的逻辑上的时间字段，用于 在表处理程序中，指示时间和访问相应的时间戳。
时间属性，可以是每个表 schema 的一部分。一旦定义了时间属性，它就 可以作为一个字段引用，并且可以在基于时间的操作中使用。时间属性的行为类 似于常规时间戳，可以访问，并且进行计算。
定义处理时间（Processing Time）
处理时间语义下，允许表处]]></description><category></category></item><item><title><![CDATA[Flink中 Table 和 DataStream 的相互转换]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120019143</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120019143</guid><author>YYDS_emmm</author><pubDate>Tue, 31 Aug 2021 15:32:28 +0800</pubDate><description><![CDATA[Flink中 Table 和 DataStream 的相互转换
创建表环境
	val bsEnv = StreamExecutionEnvironment.getExecutionEnvironment
    bsEnv.setParallelism(1)
    val bsSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build()
    val bsTableEnv = Stream]]></description><category></category></item><item><title><![CDATA[TableAPI和FlinkSQL的两种Connect]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120016539</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/120016539</guid><author>YYDS_emmm</author><pubDate>Tue, 31 Aug 2021 15:12:57 +0800</pubDate><description><![CDATA[TableAPI和FlinkSQL的两种Connect
依赖：
&lt;properties&gt;
    &lt;scala.version&gt;2.12.10&lt;/scala.version&gt;
    &lt;mysql.version&gt;8.0.11&lt;/mysql.version&gt;
    &lt;flink.version&gt;1.13.0&lt;/flink.version&gt;
    &lt;encoding&gt;UTF-8&lt;/encoding&gt;]]></description><category></category></item><item><title><![CDATA[Flink中开窗的延迟触发、侧输出流的应用]]></title><link>https://blog.youkuaiyun.com/YYDS_emmm/article/details/119940012</link><guid>https://blog.youkuaiyun.com/YYDS_emmm/article/details/119940012</guid><author>YYDS_emmm</author><pubDate>Thu, 26 Aug 2021 21:02:59 +0800</pubDate><description><![CDATA[Flink中开窗的延迟触发、侧输出流的应用
注意如何处理迟到数据和侧数据流♥：	
flink 解决乱序事件：
1.设定eventTime 和 waterMark 通过延时时长，使窗口等待一定时间以后再触发
2.如果窗口已经触发了，还有数据没有来，那就使用允许迟到时间  （allowedLateness）此时窗口虽然被触发了到那时没有关闭，等数据来了再次触发
3.若允许迟到时间过了，还有数据没有来，那就使用将数据放入侧输出流
流程图示意如下：

import java.time.Duration

impor]]></description><category></category></item></channel></rss>