【持续更新】iPhone 设备型号对应型号名称、手机型号对应屏幕尺寸及分辨率列表
当前已更新至 iPhone 14 Pro Max。 iPhone 设备型号对应手机型号名称 设备型号(固件标识符) 手机型号名称 iPhone1,1 iPhone iPhone1,2 iPhone 3G iPhone2,1 iPhone 3Gs iPhone3,1 iPhone 4 iPhone3,2 iPhone 4 iPhone3,3 iPhone 4 iPhone4,1 iPhone 4s iPhone5,1 iPhone 5 iPhone5,2 iPhone 5 iPhone5,3 iPhone 5c iPhone5,4 iPhone 5c iPhone6,1 iPhone 5s iPhone6,2 iPhone 5s iPhone7,2 iPhone 6 iPhone7,1 iPhone 6 Plus iPhone8,1 iPhone 6s iPhone8,2 iPhone 6s Plus iPhone8,4 iPhone SE (第一代) iPhone9,1 iPhone...
解决 Logstash 在出现解析异常时 logstash-plain.log 日志文件没有记录原始数据问题
我在使用 Logstah 处理数据时,在 logstash-plain.log 文件中发现了以下的错误信息: 1234[2023-03-31T00:10:28,949][ERROR][logstash.filters.ruby ][main][d6838068510d1ed4e2d1025930d8680ca59bdef970aaa32f4e2d8d28a09ee6d3] Ruby exception occurred: unexpected token at '' {:class=>"JSON::ParserError", :backtrace=>["json/ext/Parser.java:238:in `parse'", "/usr/share/logstash/vendor/bundle/jruby/2.6.0/gems/json-2.6.3-java/lib/json/common.rb:216:in `parse'",...
Apache Kafka 如何通过全局和针对特定 Topic 设置消息的保留时长
在使用 Kafka 作为消息队列缓冲数据时,在某些业务使用场景中,我们可能需要根据实际情况调整消息在 Kafka 的保留时长。例如,对于用户行为埋点日志的数据,因为数据量较大,而且也没有必要保留 7 天(Kafka 默认消息保留时长),为减少 Kafka 集群的压力,此时就可以通过针对保存该类消息的 Topic 设置消息保留时长为 3 天。本文介绍如何通过全局和针对特定 Topic 设置 Kafka 的消息保留时长。 前提条件本文的演示示例基于 CentOS 7 操作系统,使用的是 Apache Kafka,版本为 2.2.1,Scala 版本为 2.11,安装目录位于 /opt/kafka。 Kafka 全局消息保留时长设置首先,进入 Kafka 的配置文件目录,通常位于 Kafka 安装目录下的 config 目录下: 1cd /opt/kafka/config 打开 Kafka 服务端的配置文件 server.properties: 1vim server.properties 找到配置项 log.retention.hours,可以看到该配置项默认为 168 小时,即...
Logstash如何将JSON第二层级的数据解析到第一层级
此示例演示如何使用 Logstash 将 JSON 第二层级的数据解析到第一层级(JSON 根)。 例如,原始 JSON 数据格式如下: 123456789101112131415161718192021222324252627{ "distinct_id":"u24a21a5e262debf", "time":"1679912055733", "time_offset":"0", "type":"track", "event":"ExposureView", "properties":{ "$app_version":"8.3", "$wifi":true, ...
Apache Flink 1.17 发版公告
本文翻译自 Apache Flink 社区博文——《Announcing the Release of Apache Flink 1.17》 Apache Flink PMC(项目管理委员会)很高兴地宣布发布 Apache Flink 1.17.0 版。Apache Flink 是领先的流处理标准,统一的流和批数据处理概念正被越来越多的公司成功采用。得益于我们优秀的社区和贡献者,Apache Flink 作为一项技术在不断发展壮大,并且仍然是 Apache 软件基金会中最活跃的项目之一。Flink 1.17 版本有 172 位贡献者热情参与,完成了 7 个 FLIP 和 600 多个问题,为社区带来了许多令人兴奋的新功能和改进。 迈向流式仓库为了在流式仓库领域实现更高的效率,Flink 1.17 在批处理性能和流处理语义方面进行了大量改进。这些改进标志着朝创建更高效、更精简的数据仓库迈出的重要一步,使其能够实时处理大量数据。 对于批处理而言,此版本包含了多项新功能和改进: 流式仓库 API:FLIP-282 在 Flink SQL 中引入了新的删除和更新 API,该 API...
Java 如何将 Iterator 转换为 List
在本文中,我们将学习在 Java 中如何把一个 Iterator 转换成一个 List。 为便于代码测试,我们在所有的示例代码中使用一个元素为字符串类型的 Iterator : 12Iterator<String> iterator = Arrays.asList("MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY").iterator(); 方法一:使用 While 循环一个容易想到的方法是使用 while 循环将 Iterator 转换为 List。具体代码如下: 12345678910111213141516171819202122232425262728// 此代码示例演示 while 循环方法的使用package...
【Linux常用命令】head——把一个文件的前n行拷贝到另一个文件上
在日常开发工作中偶尔需要查看文件前 n 行的内容,如果文件的大小为几个 GB 时,直接打开文件会很慢,这个时候我们可以通过复制文件的前 n 行到另一个文件上进行查看。 在 Linux 环境中可以使用 head 命令来复制一个文件的前 n 行到另一个文件上。如以下命令表示复制文件 nginx_app_log_20230320.log 中前 10 万行内容到 /tmp 目录下的 app0320_top10w.log 文件中: 1head -n 100000 nginx_app_log_20230320.log > /tmp/app0320_top10w.log (END)
Linux 常用命令 | head 详解
Linux 命令行工具提供了足够丰富的命令用于管理服务器上的文件和目录。其中最常用的命令之一是 head,它允许我们只查看文件的前几行内容,这在查看超大文件(文件大小为几个 GB 以上)时尤其有用。在这篇博文中,我们将详细讨论该命令的使用说明、注意事项、技巧窍门等,以充分利用该命令。 使用说明head 命令用于显示一个文件的前几行。要使用该命令,只需输入 head 和你想查看的文件名即可。例如,要查看一个名为 example.log 的文件的前10行,你可以输入以下命令: 1head -n 10 example.log 其中,-n 选项用于指定要查看的行数。如果不指定数字,它将默认为 10 行。还可以使用 - 号来表示除了文件最后多少行外输出所有行内容。例如,要查看文件的所有行,但不包括最后的 11 行,可以输入以下命令: 1head -n -11 example.log 注意事项在使用 head 命令时,有两个地方需要注意: 首先,注意不要使用 > 操作符意外覆盖原来的文件。例如,执行以下命令会导致 example.log 文件被其前 10 行的内容覆盖,相当于...
Flink Table Store文件存储结构——LSM树
本文简要介绍了 Flink Table Store 底层文件存储的数据结构——LSM 树的相关概念。 LSM 树,亦称日志结构合并树,英文为 log-structured merge-tree。 Sorted Runs如下图所示,LSM 树将文件组织成若干个 Sorted Run,一个 Sorted Run 由一个或多个数据文件组成,每个数据文件只会隶属一个 Sorted Run。数据文件中的记录按主键排序,在一个 Sorted Run 中,数据文件的主键范围不会有重叠的情况。但在不同的 Sorted Run 中主键范围有可能会重叠,甚至是包含相同的主键。 当查询 LSM 树时,必须先合并所有的 Sorted Run,根据用户指定的合并引擎和每条记录的时间戳合并具有相同主键的所有记录。而新的记录在写到 LSM 树之前会先缓存在内存中,当内存缓冲区满时,内存中的所有记录会先进行排序,然后再刷到磁盘上,此时就创建了一个新的 Sorted Run。 Compaction随着越来越多的记录写入 LSM 树,Sorted Run 的数量也会越来越多。因为查询 LSM...
Filebeat工作原理
本文主要介绍 Filebeat 的两个关键组件以及它们如何共同协作完成数据采集和转发工作。理解并熟练掌握这些组件的工作原理将对后面深入学习 Filebeat 的各种功能和特性,尤其是为特定使用场景配置 Filebeat 时大有裨益。 Filebeat 由两个关键组件构成:输入(Input)和采集器(Harvester,[ˈhɑːrvɪstər])。这些组件共同协作,跟踪日志文件,并将事件数据发送到指定的输出上。 采集器采集器逐行读取文件内容并将其转换为事件,然后发送到指定的输出上。一个采集器只会跟踪一个日志文件。需要注意的是,采集器还负责文件的打开与关闭——采集文件之前需要先打开文件,采集结束之后需要关闭文件。在采集的过程中,文件会一直保持打开的状态。也就是说,如果在采集期间移除或重命名文件,采集器仍会继续读取该文件,这会导致磁盘空间不被释放,除非关闭采集器。 默认情况下,Filebeat 保持文件为打开状态的时长取决于配置项 close_inactive 设置的时长。如果一个文件在设定的时间内没有新增数据,即 Filebeat 在设定的时间内没有从该文件中采集到数据,那么...
安装Filebeat
Filebeat 在 Linux、Unix、Mac 和 Windows 上均可正常运行。根据我们当前使用的服务器的系统类型,选择适用于该系统的命令来下载和安装 Filebeat。 在 Linux 上安装 Filebeat首先,你可以试着输入 filebeat version,看看系统有没有安装 Filebeat: 12$ filebeat versionfilebeat: command not found 或者使用 whereis 命令查看, 12$ whereis filebeatfilebeat: 类似上面的命令的输出结果,说明当前系统并没有安装 Filebeat。 你可以使用以下命令下载 Filebeat 压缩包文件: 1curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.6.2-linux-x86_64.tar.gz 解压文件: 1tar xzf...
了解Filebeat:采集、转发和汇总日志的轻量型解决方案
Filebeat 是什么?Filebeat 是基于 libbeat 框架开发的一款开源的轻量型日志采集器,专为快速收集和传输多种来源的日志数据而设计。它可以从安全设备、云、容器、主机或 OT 等多种数据源采集日志,并提供一种轻量型的方法,用于转发和汇总日志与文件。 Filebeat 有什么特点?1、Filebeat 支持从多种数据源收集数据,例如安全设备、云服务、容器、主机或 OT等。 2、Filebeat 具有性能稳定、支持容错机制的特点。如果在未来某个时刻 Filebeat 因为某种原因中断,恢复正常后,它可以从中断前停止的位置继续读取并转发日志行。 3、Filebeat 支持背压机制。这意味着,如果 Filebeat 发送日志数据的速率超过接收端(例如 Logstash、Elasticsearch等)处理数据的速率,接收端会向 Filebeat 发出信号,要求 Filebeat 减慢发送速度,以避免 Filebeat 收集的数据因内存不足而被丢弃。一旦接收端处理数据的速率跟上,Filebeat 就会恢复到原来的步伐并继续传输数据。 4、Filebeat...
Flink依赖配置:Table API & SQL
我是 Flink 初学者,现在我要在 Flink 应用程序中添加支持使用 Flink SQL 进行数据统计的功能,但我不知道应该添加哪些依赖。 程序使用 Java 语言开发,Flink 版本是当前最新的 1.16.1 版本,程序的功能是使用 Flink SQL 从 Kafka 读取数据,并把读取到数据直接进行标准输出。Kafka 的数据为 Canal 程序采集 MySQL 的 Binlog 日志,所以这里我使用到的 Table API 连接器有 Kafka Connector,Canal Connector。 pom.xml...
Superset配置——连接Presto出现ERROR: Could not load database driver: PrestoEngineSpec
问题描述安装好 superset,版本 2.0.1,通过命令 superset run -p 8088 --with-threads --reload --debugger 启动 debug 模式,在界面配置 presto 数据库连接,点击 TEST CONNECTION,右下角弹出以下错误信息: 1ERROR: Could not load database driver: PrestoEngineSpec 在启动 superset 之前,服务器上已按照官方文档安装了驱动: 1pip3 install pyhive 解决方法从错误信息可以看出这是驱动问题导致的。虽然安装了正确的驱动,但是如果驱动的版本太低,同样也会有问题。通过 pip 安装默认都是最新版本,截至当前,pyhive 的最新版本为 0.6.5。 首先检查服务器上安装的 pyhive 的版本是否为最新的版本: 1pip3 list 或: 12$ pip3 list |grep PyHivePyHive 0.6.5 可以看到 PyHive 为最新版本...
查看filebeat版本
对于 Linux 服务器上已安装好的 filebeat,该如何查看 filebeat 版本? 执行命令 filebeat version 即可输出 filebeat 的版本信息。在下面的示例中,filebeat 的版本号为 7.13.4。 12$ filebeat versionfilebeat version 7.13.4 (amd64), libbeat 7.13.4 [1907c246c8b0d23ae4027699c44bf3fbef57f4a4 built 2021-07-14 18:42:41 +0000 UTC] (END)
通过Flink WebUI仪表盘上传的jar包默认存储在哪个目录下?
在 Flink WebUI 上是可以查看上传 jar 包的存放目录的。打开 Flink WebUI,点击 Job Manager,再点击 Configuration 标签页,配置项 web.tmpdir 对应的值即为上传后的 jar 包的存放目录,具体如下图所示: 登录服务器,使用 ll 命令查看目录内容: 123$ ll /tmp/flink-web-cc812fd4-effb-48f0-8ef2-d67f0700f1b4/flink-web-upload/total 159364-rw------- 1 hadoop hadoop 163186973 Jan 1 10:03 2a08ffd6-34bf-4abb-9735-2c46587fef23_flink-connectors-1.0-SNAPSHOT.jar 需要注意的是,存放在默认路径下的 jar 包,会在 Job Manager 重启后被删除。如果重启 Job Manager 后还想保留之前上传的 jar 包,可以在 Flink 的配置文件 flink-conf.yaml 添加 web.upload.dir...
Java使用Gson判断字符串是否为JSON格式
配置Maven依赖首先,在 pom.xml 文件中配置 gson 依赖项: 12345<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10</version></dependency> gson 版本根据实际情况进行选择,建议使用最新版本(见 Maven Central )。 本文使用的是 2.10 版本(当前最新版本)。 非严格验证Gson 库的 JsonParser 类提供了 parseString() 方法,用于将指定的 JSON 字符串解析成 JsonElements 对象。如果指定的字符串不是有效的 JSON 格式,则在解析的过程中会抛出 JsonSyntaxException 类型异常。 我们可以使用该方法来判断字符串是否为 JSON 格式,如果在解析过程中出现错误,说明指定的字符串不是有效的 JSON...
Java中Date类型与LocalDate或LocalDateTime相互转换
在 Java 中,Date 类型是表示日期和时间的类,而 LocalDate 和 LocalDateTime 是从 Java 8 开始引入的新日期时间 API 中的类。为了在不同的 API 之间进行转换,我们可以使用一些简单的方法。下面我们来详细介绍一下它们之间的相互转换。 Date类型转LocalDate或LocalDateTime类型要将 Date 类型转换为 LocalDate 或 LocalDateTime 类型,我们可以使用 Instant 类来辅助完成转换。Instant 类是 Java 8 中引入的用于表示时间戳的类。 使用以下方法将 Date 类型转换为 LocalDate:123Date date = new Date();Instant instant = date.toInstant();LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); 使用以下方法将 Date 类型转换为 LocalDateTime:123Date date = new...
关于Presto的LEFT JOIN,有一个很容易被忽略的点
LEFT JOIN 在 SQL 查询中是一种很常见的数据查询操作,其查询出来的数据是以左表为主表,保留左表的记录,如果右表没有匹配的记录,依然会返回左表的记录,此时右表的字段用 NULL 填充。 但是,在 Presto 中使用 LEFT JOIN 联结表查询,并需要对左表或右表进行过滤时,有一个特别容易忽略的地方是过滤条件的位置——对左表过滤时条件应写在 where 语句后,对右表过滤时条件应写在 on 后面。 如果对左表的过滤条件写在 on 后面,那么左表的每一行记录都会被保留,相当于没有过滤左表的数据。如果对右表的过滤条件写在 where 后面,那么 LEFT JOIN 查询出来的结果就后 JOIN 查询出来的结果一样,左表没有与右表匹配的记录也会被过滤。 下面通过一个例子来说明。 有两张表——用户信息表和用户地址表,表名分别为:tmp_user 和 tmp_addr,表中的记录如下: 表 tmp_user: user_id nickname 1 jack 2 johnson 3 marry 表...
Hive表重命名
表更名 SQL: 1alter table 旧表名 rename to 新表名; 执行该命令之后,表数据所在的位置(LOCATION)会移动到新的路径下。 例如,将表 test.dws_staff_kpi_day 重命名为 test.dws_staff_kpi_month。 在更名前,查看表 test.dws_staff_kpi_day 所在的位置: 1show create table test.dws_staff_kpi_day; 结果如下所示,可以看到表数据位于 hdfs://hdp-cluster/apps/hive/warehouse/test.db/dws_staff_kpi_day 目录下: 1234567891011121314151617181920CREATE TABLE `test.dws_staff_kpi_day`( `user_id` int COMMENT '用户ID', `phone` string COMMENT '手机号码', ...)COMMENT...