<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Chenftli的博客]]></title><description><![CDATA[坚持记录，不断更新，让技术落地产生价值]]></description><link>https://blog.youkuaiyun.com/Chenftli</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Chenftli]]></copyright><item><title><![CDATA[flink实战：flink自定义sink，以入solr、mongodb为例]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/128479291</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/128479291</guid><author>Chenftli</author><pubDate>Thu, 29 Dec 2022 11:52:49 +0800</pubDate><description><![CDATA[自定义sink需要继承 RichSinkFunction，重写open、invoke、close三个方法，open方法主要实现一些公共资源的开启工作，如mongo、solr的连接客户端。invoke会在每条数据进入后调用，主要写一些数据的转化、插入、查询等具体的实际业务。这个查询了mongo中的数据，转化长对应的javaBean，更新了传入的javaBean以后，转化成document，存入mongodb。下面我给大家两个实例，一个是sink solr的，一个是sink mongo的。]]></description><category></category></item><item><title><![CDATA[windows计划任务所遇到的闪退、触发器没有按时执行的坑]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/128319633</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/128319633</guid><author>Chenftli</author><pubDate>Wed, 14 Dec 2022 17:42:22 +0800</pubDate><description><![CDATA[3、这里还有一个需要根据需求设置的选项，默认是请勿启动新实例，这里意味者如果这个任务有运行，没有运行完成，是不会启动这个任务的程序的，这就会导致触发器在本应该触发的时间就不触发了。6、关于整点每隔一小时执行一次触发器的设置，不想重新截图了，使用上一张，这里我们开始设置了0:00:00,这样我们设置对了，不过我们等不到下次执行，要等到第二天的0:00:00触发了以后才会按照整点每隔一小时执行。2、下面是每隔一小时执行一次的设置，一定要注意点选红框的已启用，不然不会出发一小时执行一次。]]></description><category></category></item><item><title><![CDATA[pymongodb 的update_one、replace_one的参数]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/127213651</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/127213651</guid><author>Chenftli</author><pubDate>Sat, 08 Oct 2022 18:09:42 +0800</pubDate><description><![CDATA[这样写，会查出如果存在就更新，如果不存在就插入。可以实现不改变list原来的元素的情况下添加。这样写，但必须查到才能更新,自做更新。]]></description><category></category></item><item><title><![CDATA[重学scala十：scala中的泛型]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/127061379</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/127061379</guid><author>Chenftli</author><pubDate>Mon, 26 Sep 2022 21:25:26 +0800</pubDate><description><![CDATA[scala和Java一样，类和特质、方法都可以支持泛型。我们在学习集合的时候，一般都会涉及到泛型。定义一个Pair类包含2个类型不固定的泛型。在scala中，使用方括号来定义类型参数。1、定义一个泛型方法。]]></description><category></category></item><item><title><![CDATA[重学scala九：scala中的提取器]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/126766458</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/126766458</guid><author>Chenftli</author><pubDate>Thu, 08 Sep 2022 16:03:55 +0800</pubDate><description><![CDATA[提取器是从传递给它的对象中提取出构造该对象的参数。(回想样例类进行模式匹配提取参数)scala 提取器是一个带有unapply方法的对象。unapply接受一个对象，然后从对象中提取值，提取的值通常是用来构造该对象的值。]]></description><category></category></item><item><title><![CDATA[重学scala八：scala中的异常处理]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/126766357</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/126766357</guid><author>Chenftli</author><pubDate>Thu, 08 Sep 2022 15:59:29 +0800</pubDate><description><![CDATA[在scala中，可以使用异常处理来解决这个问题。在Scala里，借用了模式匹配的思想来做异常的匹配以下为scala中try…try中的代码是我们编写的业务处理代码在catch中表示当出现某个异常时，需要执行的代码在finally中，是不管是否出现异常都会执行的代码。执行程序，可以看到scala抛出了异常，而且没有打印出来"你好"。说明程序出现错误后就终止了。那怎么解决该问题呢？我们也可以在一个方法中，抛出异常。语法格式和Java类似，使用throw new Exception…]]></description><category></category></item><item><title><![CDATA[重学scala七：scala中的模式匹配和样例类]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/126764719</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/126764719</guid><author>Chenftli</author><pubDate>Thu, 08 Sep 2022 15:02:50 +0800</pubDate><description><![CDATA[scala有一个十分强大的模式匹配机制，可以应用到很多场合。java switch caseswitch语句类型查询以及快速获取数据并且scala还提供了样例类，对模式匹配进行了优化，可以快速进行匹配。]]></description><category></category></item><item><title><![CDATA[单机版redis的安装]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/126589131</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/126589131</guid><author>Chenftli</author><pubDate>Mon, 29 Aug 2022 17:28:41 +0800</pubDate><description><![CDATA[在该模式下，redis会在后台运行，并将进程pid号写入至redis.conf选项pidfile设置的文件中，此时redis将一直运行，除非手动kill该进程。daemonize:no：当daemonize选项设置成no时，当前界面将进入redis的命令行界面，exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。需要注意的是scl命令启用只是临时的，退出shell或重启就会恢复原系统gcc版本。执行以下命令修改redis配置文件。执行以下命令进行解压redis。...]]></description><category></category></item><item><title><![CDATA[报错：Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c.]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125537240</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125537240</guid><author>Chenftli</author><pubDate>Thu, 30 Jun 2022 11:31:24 +0800</pubDate><description><![CDATA[下面为解决问题中报的错误：
Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c. Caller xfs_free_extentInternal error xfs_trans_cancel at line 990 of flie fs/xfs/xfs_trans.c.xfs_repair: /dev/mapper/cl-root contains a mounted filesystem
]]></description><category></category></item><item><title><![CDATA[报错FileSystemException: /datas/nodes/0/indices/gtTXk-hnTgKhAcm-8n60Jw/1/index/.es_temp_file:结构需要清理]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125514923</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125514923</guid><author>Chenftli</author><pubDate>Wed, 29 Jun 2022 10:04:47 +0800</pubDate><description><![CDATA[首先我碰到的问题是服务器突然断电导致elasticsearch宕机，当我再次启动的时候到对应的目录中查看，ls查看文件时报所以判断肯定是由于断电导致分区数据损毁，丢失了文件的信息。所以需要修复分区，并重新挂载到目录上。查看磁盘挂载
可看到文件所在的目录挂载的分区是/dev/sdc,这就是我们需要修复的。先将已经挂载好的分区卸载下来
然后修复
修复好以后重启服务器、或者重新挂载，当然要看你挂载的分区持久化写入/etc/fstab中，如果写了，则重启服务器就会重新将分区挂载到目录下。
重启命令
根据上述操作，我]]></description><category></category></item><item><title><![CDATA[Prometheus+Grafana安装配置并配置linux服务器监控dashboard]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125353225</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125353225</guid><author>Chenftli</author><pubDate>Sat, 18 Jun 2022 23:51:07 +0800</pubDate><description><![CDATA[prometheus是谷歌用golang语言开发的一款开源的监控软件，使用安装在远程机器上的exporter，通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。Prometheus为了支持各种中间件以及第三方的监控提供了exporter，大家可以把它理解成监控适配器，将不同指标类型和格式的数据统一转化为Prometheus能够识别的指标类型。例如Node exporter主要通过读取Linux的/proc、/sys目录下的系统文件获取操作系统运行状态，redis exporter通过Reids]]></description><category></category></item><item><title><![CDATA[centos7服务启动不了的排查思路]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125328880</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125328880</guid><author>Chenftli</author><pubDate>Fri, 17 Jun 2022 10:34:11 +0800</pubDate><description><![CDATA[首先我们在/usr/lib/systemd/system目录下创建一个服务文件，写下服务启动任务配置。下面我以prometheus的node_exporter为例
写如下配置
然后重新加载服务
然后开启此服务
再查看服务开启状态
从上图可以看出失败了，我去为什么呢赶紧查看日志吧
查看对应node_exporter.service服务的日志
翻到最后可以看到报错日志为可以判断了是参数端口号解析不出来，由于多了"“,所以去掉”",改为下面的配置。
再次加载服务文件，并开启服务
查看服务开启状态：
从上面的排查示]]></description><category></category></item><item><title><![CDATA[flink报错踩坑：org.apache.flink.table.catalog.hive.client.HiveShimV100.registerTemporaryFunction]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125235160</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125235160</guid><author>Chenftli</author><pubDate>Sat, 11 Jun 2022 15:34:55 +0800</pubDate><description><![CDATA[当想使用本地开发环境运行flink读写线上hive数据来运行时报错。我使用maven管理的开发环境依赖。由于代码发布到测试环境集群上跑时并没有报错，而测试环境对应的依赖都是使用放在上面的依赖jar的，并不使用本地maven管理的依赖（也就是没有打入项目jar）。所以我猜测是本地运行环境依赖有问题，也就是项目中maven的pom文件的依赖有问题。在多次检查该项目中maven的pom文件导入的依赖和反复查看flink Table API Connector针对hive的官方文档后终于解决了问题。下面是我处理问题]]></description><category></category></item><item><title><![CDATA[报错：Could not find a suitable table factory for ‘org.apache.flink.table.factories.TableSourceFactory]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125189619</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125189619</guid><author>Chenftli</author><pubDate>Wed, 08 Jun 2022 18:01:54 +0800</pubDate><description><![CDATA[重要错误提示：这是在提交yarn时报的错误，原因其实就是少了一些包，提交的集群后一些依赖包使用flink的lib目录下的，所以我需要将一些依赖包放到lib目录下。我们看到缺少的是org.apache.flink.table.factories.TableSourceFactory类，所以对应的应该是flink连接JDBC的包。这里我们去官网上下载你对应flink版本的连接JDBC的包，如下图：
放到提交集群的客户机部署的flink的lib目录下。可以看到上面最主要的是缺少依赖包，其实像很多类似的错误都是由于]]></description><category></category></item><item><title><![CDATA[重学scala：scala中的隐式转换和隐式参数]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125159449</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125159449</guid><author>Chenftli</author><pubDate>Tue, 07 Jun 2022 09:48:33 +0800</pubDate><description><![CDATA[Scala提供的隐式转换和隐式参数功能，是非常有特色的功能。是Java等编程语言所没有的功能。它可以允许你手动指定将某种类型的对象转换成其他类型的对象，或是给一个类增加方法。通过这些功能，可以实现非常强大的功能。隐式转换其核心就是定义一个使用 implicit 关键字修饰的方法，实现把一个原始类转换成目标类，这样你可以调用目标类中的方法，是不是很强大。隐式转换的方法需要定义在一个object中。
示例二：对自己定义的类使用隐式转换，普通人成为大佬

结果：

结果：
它是指在函数或者方法中，定义一个用imp]]></description><category></category></item><item><title><![CDATA[重学scala：scala函数式编程与高阶函数]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125135646</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125135646</guid><author>Chenftli</author><pubDate>Sun, 05 Jun 2022 19:39:18 +0800</pubDate><description><![CDATA[谈到编程方式有指令式编程、过程化编程、函数式编程，函数式编程在使用时主要的思想就是把运算过程写成一些列嵌套的函数调用。把一组数据通过函数实现运算转化成另一组数据。函数式编程这种方式在我们将来开发Spark、Flink的业务代码时会大量使用。下面列出了一些我们经常使用的进行函数式编程的Iterable trait（可迭代特质）方法。接口描述




foreach
API
说明




参数
f: (A) ⇒ Unit
接收一个函数对象，函数的输入参数为集合的元素，返回值为空


返回值
Unit
空


方]]></description><category></category></item><item><title><![CDATA[flink-sql入es报错：Missing required options are document-type]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125105275</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125105275</guid><author>Chenftli</author><pubDate>Thu, 02 Jun 2022 18:23:40 +0800</pubDate><description><![CDATA[我是在flink-sql创建es表的时候报的错，报错提示缺少对应的options，及document-type
，我连忙去flink官方文档查找答案：https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/table/elasticsearch/#document-type从官方文档给出的连接参数可以看出document-type在es6中需要指定，而在es7中无需指定，原因大概是6.0版本及以前一个索引里可以创建]]></description><category></category></item><item><title><![CDATA[重学scala：scala中的数据结构]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/125032243</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/125032243</guid><author>Chenftli</author><pubDate>Sun, 29 May 2022 16:23:13 +0800</pubDate><description><![CDATA[注意：下面的例子均在scala shell中演示的
一、数据结构介绍
对于Scala来说，同时支持可变集合和不可变集合，不可变集合一直都不会发生变化，可以安全的并发访问。
Scala优先采用不可变集合，同时几乎所有的集合类，Scala都同时提供了可变和不可变的版本。
下面是两个主要的包：不可变集合：scala.collection.immutable、可变集合： scala.collection.mutable。
不可变集合继承层次：

可变集合继承层次：

二、实操
1、数组
可以用数组来存放一组数据。s]]></description><category></category></item><item><title><![CDATA[重学scala：scala中的变量、方法、函数]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/124997975</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/124997975</guid><author>Chenftli</author><pubDate>Fri, 27 May 2022 09:49:20 +0800</pubDate><description><![CDATA[文章目录简介1、 scala中声明变量2、惰性变量3、基本数据类型4、scala类型层次结构5、scala中的条件表达式6、scala方法的重载7、scala中的块表达式8、循环1、for循环2、while循环9、方法和函数1、方法2、函数3、方法和函数的区别4、方法转换为函数
提示：代码实例重点在于讲解知识点上，代码相对简单，所以都是使用scala shell来直接操作的
简介
Scala是一门多范式的编程语言，一种类似java的编程语言，是可扩展语言，并集成面向对象编程和函数式编程的各种特性的混合功能编]]></description><category></category></item><item><title><![CDATA[一文解决安装Anaconda后C盘不断增加的问题、修改默认配置]]></title><link>https://blog.youkuaiyun.com/Chenftli/article/details/124901260</link><guid>https://blog.youkuaiyun.com/Chenftli/article/details/124901260</guid><author>Chenftli</author><pubDate>Sat, 21 May 2022 17:56:24 +0800</pubDate><description><![CDATA[这个问题主要原因是由于Anaconda默认安装虚拟环境以及pkg在c盘的问题，有些同学在安装Anacoda时明明选择了其他安装路径，但是C盘还是不断在增加。

下面我们来解决，这里其实有两种解决方式一种是通过添加dir来替换默认路径、一种是直接配置c盘路径下的.condarc文件,请记住这两种方法一定是再安装anaconda时选择的是Just Me，如果你选择的是All User，改了也不会生效
第一种方法
首先使用下面命令查看conda的配置
conda config --show


如上图，我们可以看]]></description><category></category></item></channel></rss>