用户画像是什么
简介在大数据领域,用户画像一般指用户信息标签化。首先,通过多种渠道方式,尽可能多地收集用户各种各样维度的数据,如用户信息、消费水平、消费习惯、购买产品类目偏好等;其次,综合收集到的数据,对用户特征进行刻画与抽象;最后再对这些特征进行分析、统计和推断,挖掘潜在价值。 一个完善的用户画像系统,不仅可以帮助企业进行精细化运营管理,如提升用户购买转化率、商品的曝光/点击率等运营指标,甚至为企业的战略决策提供支持。现在,互联网上常见的针对用户进行个性化推荐、精准营销(如定向广告投放)、个性化服务等,有不少是直接依赖用户画像。例如,不同用户打开同一个外卖 APP,用户极有可能在 APP 首页上看到的是不同的推荐商家,即所谓的“千人千面”,其背后就是用户画像的一个应用场景——根据用户当前所在位置、历史订单数据(口味、消费水平等),给用户打上“标签”,并根据标签给用户推荐合适的商家。 根据打标签的方式,可以将标签分为以下三大类: 统计类标签,通过对用户信息、访问记录、下单消费等常规数据直接进行统计得到,如用户性别、常驻地、年龄、设备类型、近 30 日活跃天数、近 30 日下单天数、近 30...
Windows下修改与刷新hosts配置文件
hosts 文件位置: 1C:\windows\system32\drivers\etc 选中 hosts 文件,右键,使用文本工具(如 Notepad++、VS Code、Sublime Text、记事本等)打开修改即可。如添加以下 host 配置: 110.10.18.21 bigdata1.johnson.com bigdata1 为使刚刚的更改生效,需要刷新 DNS 配置,具体步骤如下: 打开 命令提示符 应用: 快捷键:win + r 输入 cmd,回车,即可打开 命令提示符 应用。 在打开的 命令提示符,输入 ipconfig /flushdns,回车,即可: 1ipconfig /flushdns 显示 DNS 缓存内容: 1ipconfig /displaydns (END)
如果Java在技术上落后,为什么人们还在使用Java呢
本文翻译至《Why do people still use Java, if Java is behind technologically》。 首先,Java 开发人员有很多工作岗位,这是一个原因,但为什么人们仍然使用 Java,包括在新项目中使用呢? 最近流行的高级语言,如 Python、Ruby,因其代码简便性和简洁性,可以很好地提高开发人员的生产力、灵活性和快速迭代。这些语言的动态特性对于许多广泛的应用程序来说非常棒,但是,当项目变得非常大、涉及到大量开发人员或者当速度和容错性至关重要时,它们就会开始崩溃。 有一些技术和约定可以解决动态类型的代码稳定性问题,但是技术和约定意味着人们需要遵循它们,即使这样,也存在难以预防的漏洞。以 PHP 为例,它在整个 Facebook 中用于后端编码,Facebook 对其进行了扩展,为其提供静态类型和动态编译,以便它可以提供使用 Java 等技术时所获得的速度和稳定性。Scala、Haskel、Erlang 和 Golang 等外来语言将主要用于最适合它们的特定应用程序。 另一方面,对于许多应用程序来说,Java...
Elasticsearch索引添加字段
本文基于 7.1.0 版本的 Elasticsearch 演示如何给已有的索引添加新字段,并对比添加新字段前后的数据情况。(以下 API 调用均在 Kibana 开发工具上操作) 创建索引 user_info_v220101: 1234567891011121314151617PUT user_info_v220101 { "mappings": { "properties": { "user_id": { "type": "integer" }, "phone": { "type": "keyword" }, "create_time": { "type": "date", ...
【Redis】flushall命令——清空所有缓存数据
如何清空 Redis 集群的所有缓存数据?即删除所有数据库的所有 key。 使用 Redis 的 flushall 命令。 该命令适用 Redis 版本:≥ 1.0.0 执行结果总是返回:OK。 NOTE:生产环境谨慎操作!!!除非你很清楚自己正在做什么! 具体步骤如下: 在终端命令行窗口,输入连接 Redis 指令: 1redis-cli -h 192.168.182.227 -p 1379 参数说明: -h:Redis Host(连接地址,如果连接地址为 127.0.0.1,可忽略该参数); -p:Redis Port(端口号,如果端口号为 6379,可忽略该参数); -a:Redis 连接密码(如有密码的话,需要上该参数,如 -a 1234567890k) 连接成功后,输入 flushall 指令即可清空 Redis 所有缓存数据: 1flushall 示例: 123$ redis-cli -h 192.168.182.227 -p 1379192.168.182.227:1379> flushallOK (END)
在Presto中实现Hive LATERAL VIEW EXPLODE
我是 Presto 新手,我们公司数据仓库中有一张表(表名:dwd_user_country),记录了用户到访过的国家与地区。这里为简化问题描述,将该表结构抽象为两个字段:user_id 和 countries,其中 countries 字段的值采用英文逗号连接用户到访过的国家与地区。 表数据如下表所示: user_id countries 26841018 中国,马来西亚,美国,瑞士,泰国,冰岛 现在,我需要从该表中统计每个国家或地区的到访人数,在 Hive 语法中,我可以使用 LATERAL VIEW EXPLODE 将该表的数据转成以下格式,再按 country 字段做 GROUP BY 统计。如果现在是使用 Presto 该怎么做呢? user_id country 26841018 中国 26841018 马来西亚 26841018 美国 26841018 瑞士 26841018 泰国 26841018 冰岛 Hive 查询 首先使用 split 函数将 countries 字段分割成数组,再使用...
【Flink作业运行出错】beyond the 'PHYSICAL' memory limit. Killing container
问题描述Flink 版本:1.13.6 部署模式:Flink On YARN Application Mode 当 Flink 作业在 YARN 上运行了几天之后,容器会因为物理内存使用超出物理内存限制而被杀死,并报如下错误: 1234567892022-08-12 12:36:04,168 WARN akka.remote.ReliableDeliverySupervisor [] - Association with remote system [akka.tcp://flink@flink-node-06:42477] has failed, address is now gated for [50] ms. Reason: [Association failed with [akka.tcp://flink@flink-node-06:42477]] Caused by: [java.net.ConnectException: Connection refused:...
【Linux常用命令】tar压缩和解压文件或文件夹
压缩文件1tar -zcvf ljx.tar.gz ./linjiangxiong/ 该命令表示压缩当前文件夹下的文件夹 linjiangxiong,压缩后的文件名为 ljx.tar.gz 。 如果需要压缩多个文件,只需要在命令末尾追加需要压缩的文件即可,如: 1tar -zcvf ljx.tar.gz ./linjiangxiong/ ./ljx/ 解压文件1tar -xzvf ljx.tar.gz 该命令表示把后缀为 .tar.gz 的文件解压到当前文件夹下。 如果需要将文件解压缩到其他目录,则使用命令: 1tar -xzvf ljx.tar.gz -C /opt/ljx 该命令表示把后缀为 .tar.gz 的文件解压到 /opt/ljx 目录下。 (END)
【Linux常用命令】用户与用户组
添加用户添加用户命令: 1useradd 用户名 修改用户密码命令: 1passwd 用户名 e.g. 添加 lemon 用户: 1useradd lemon 为 lemon 用户设置密码: 1passwd lemon 根据提示输入新密码即可,提示/输出内容如下: 123456[root@node01 bigdata]# passwd lemonChanging password for user lemon.New password: BAD PASSWORD: The password is shorter than 8 charactersRetype new password: passwd: all authentication tokens updated successfully. 添加用户组命令: 1groupadd 组名 e.g. 添加 group2 组: 1groupadd group2 查询系统所有用户命令: 1cat /etc/passwd 查询系统所有组命令: 1cat...
Java方法如何返回多个值
我们知道,Java 方法不支持有多个返回值。如果要在一个 Java 方法中返回多个处理结果,有以下几种方式: 使用数组数组元素要求类型相同,如果方法的处理结果类型不同,比如有数值类型、字符串类型等,可以使用像 List<Object> 来存放。此种方法最大的弊端是调用方需要知道列表中每一个 Object 的实际类型并做强制转换,不够优雅,维护、使用成本也比较高。实际开发中不推荐使用。 使用映射如 Map<String, Object>,使用 Object 类型存放结果,调用方需要知道每个 key 值,以及每个 key 值对应的 Object 实际类型。此种方法同样不够优雅,维护、使用成本也比较高。实际开发中不推荐使用。 自定义类将方法的多个处理结果封装成一个类进行返回,比如方法中需要返回的处理结果有整数类型、浮点数类型和字符串类型,我们可以封装一个这样的类来接收返回值: 1234567891011121314151617181920212223242526272829303132333435363738public class ProcessResult...
HiveSQL内置函数——DATEDIFF函数
DATEDIFF(string enddate, string startdate)返回从 startdate 到 enddate 的天数。 如查询从 2022-08-01 到 2022-08-16 的天数: 12-- 该查询返回结果为 15SELECT DATEDIFF('2022-08-16','2022-08-01'); 使用示例一个常见的例子是计算用户未活跃时长(天),该指标的定义:用户最后一次登录时间距离某天(一般是昨日)的天数。 1234-- 参数dt:20220815SELECT user_id, DATEDIFF(FROM_UNIXTIME(UNIX_tIMESTAMP('${dt}','yyyyMMdd')), last_login_time) FROM mydw.dwd_user 输出示例: 123456+------------+-----------+| user_id | _c1 ...
在 Java 中如何使用 Gson 库序列化 NULL 字段
默认情况下,Gson 对象不会将值为 NULL 的字段序列化到 JSON 对象中。如果要序列化值为 NULL 的字段,可以在创建 Gson 对象之前,先调用 GsonBuilder 实例的 serializeNulls() 方法,再由 GsonBuilder 创建 Gson 实例,即可在序列化后的 JSON 中包含 NULL 值的字段。 具体示例代码如下: 12345678910111213141516171819202122232425import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.johnson.gson.model.User;public class NullFieldSerializeDemo { public static void main(String[] args) { GsonBuilder builder = new GsonBuilder(); builder.serializeNulls(); ...
HiveSQL内置函数——COALESCE函数
COALESCE(T v1, T v2, …)COALESCE,读作 /ˌkəʊəˈles/,该函数用于返回第一个不为 NULL 的 v,如果所有 v 都为 NULL,则返回 NULL。 举个例子: SELECT COALESCE(A, B, C) FROM TABLE_NAME 该 SQL 的返回值判断过程如下: 如果 A 不为 NULL,则返回 A,否则判断 B 是否为 NULL,若 B 不为 NULL,则返回 B,否则继续判断 C 是否为 NULL,若 C 不为 NULL,则返回 C,否则返回 NULL。 使用场景一个常用的场景是在一张表中的某个字段的默认值为 NULL,在查询的时候,如果该字段为 NULL,我们希望返回其他有意义的值而不是 NULL 值,这时就可以使用 COALESCE 函数。 例如,用户表(dwd_user)中的常驻城市字段(city),如果为 NULL 时,我们希望在返回给最终用户时可以显示“未知”,而不是 NULL 值,可以这么写: 1SELECT COALESCE(city, ‘未知’) FROM dwd_user 另一个常用场景是两张表做...
【elasticsearch】删除文档后如何释放存储大小
在使用 Elasticsearch 的过程中,经常会有删除某个索引历史数据的需求。比如存储飞机票信息的索引,通常只需要保留今日及今日之后的机票信息。为提升索引的效率和防止索引过大,同时尽量避免删除过程中影响线上环境稳定性,一般会选在业务低峰期的时候删除历史数据。 如以下 DSL 通过调用 _delete_by_query 方法删除 flight_v20220107 索引中日期(dt)在 20220729 ~ 20220802 之间的机票信息数据: 123456789101112131415POST /flight_v20220107/_delete_by_query?size=1000000&conflicts=proceed{ "query": { "bool": { "filter": { "range": { "dt": { ...
使用Gson将字符串转成JsonObject对象
概述当在 Java 项目中使用 Gson 库处理 JSON 时,我们可以将原始 JSON 字符串转换成更容易使用的类对象或数据结构。如将 JSON 字符串转换为 **Map<String, Object>** 对象,或者其他自定义类型的对象。但有些时候将 JSON 字符串转换为通用对象会更方便使用。 本文将演示如何使用 Gson 将 JSON 字符串转为 **JsonObject** 对象。 配置Maven依赖首先,在 pom.xml 文件中配置 gson 依赖项: 12345<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.9.1</version></dependency> gson 版本根据实际情况进行选择,建议使用最新版本(见 Maven Central )。 本文使用的是 2.9.1 版本(当前最新版本)。...
如何查看 Ambari 版本
如何查看 Ambari 版本? 打开 Ambari web 界面(默认端口:8080,如 http://ambari:8080/#/login ),成功登录之后,点击右上角用户名,在下拉框中点击 About,即可查看当前 Ambari 的版本。 具体如下图所示:
生产环境MySQL慢查询问题定位
本文根据实际项目经验,详细描述 MySQL 慢查询问题的发现及排查解决过程。在不影响读者阅读理解的前提下,对部分原始数据进行脱敏处理。 背景生产环境 MySQL 硬件配置:32C/64G/2T ESSD MySQL 版本:5.7.28 存储数据主要来源:主要是 Flink 实时计算的指标,少部分 Presto 准实时计算的指标,同时还有部分离线数仓模型也会每天同步一份至该 MySQL,用于加速客户端查询和提升并发查询能力。 发现问题之前收到运维的反馈,生产环境上用于存放 Flink 实时计算指标的 MySQL 有告警——每分钟慢查询数超过告警阈值,需及时跟进。当时通过 MySQL 监控面板查看到部分关键指标如下: 慢查询数 QPS TPS 网络流量(流入、流出) 表锁 慢日志明细部分 SQL(当时只拉取一小部分的慢 SQL,以下这些语句是 Flink SQL 写入 MySQL 的) 12345678910111213141516# Time: 2022-07-28T01:16:52.760142Z# User@Host: bigdata[bigdata] @ ...
maven编译打包时跳过测试代码
使用 Maven 构建 Java 项目时,通常有以下两种方式,可以在打包编译时跳过项目中的测试部分代码。 -Dmaven.test.skip=true在 Maven 的命令中,使用参数 -Dmaven.test.skip=true 来跳过单元测试代码: 1mvn clean package -Dmaven.test.skip=true -DskipTests在 Maven 的命令中,使用参数 -DskipTests 来跳过单元测试代码: 1mvn clean package -DskipTests 使用 -Dmaven.test.skip=true 还是 -DskipTests使用 -Dmaven.test.skip=true 参数进行打包编译时,Maven 会完全忽略单元测试代码,既不执行测试用例类,也不编译测试用例类。 而使用 -DskipTests 参数进行打包编译,Maven 会编译测试部分的类,生成相应的 class 文件到 target/test-classes 目录下,但不会执行测试类。 一般没有特殊要求的情况,测试类最好还是进行编译。因此推荐使用...
【Linux常用命令】查看主机名
主机名(英语:hostname),也称计算机名,是指分配给计算机的一串唯一标识码,用于在网络上唯一识别该计算机。通常由字母、数字组成,也可以包含一些特殊字符,如英文连字符(-)、英文句点(.)和下划线(_)。典型的主机名最多包含 253 个字符。 在大多数 Linux 发行版中,主机名通常存储在 /etc/hostname 文件中。默认情况下,通过 ssh 命令在终端成功连接到目标服务器时,也可以看到目标服务器的主机名。如以下命令可以看到目标服务器的主机名为 kafka-eagle。 123456$ ssh hadoop@10.10.18.8Last login: Fri May 13 20:50:56 2022 from 10.10.18.215Welcome to Alibaba Cloud Elastic Compute Service ![hadoop@kafka-eagle ~]$ 介绍完主机名的概念,接下来,我们一起了解在 Linux 操作系统中其他各种查找主机名的命令。 使用 hostname 命令hostname 命令用于显示 Linux 系统的 DNS...
Apache Flink 1.14.5 发版公告
本文翻译自 Apache Flink 社区博文——《Apache Flink 1.14.5 Release Announcement》。 Apache Flink 社区很荣幸地宣布 Flink 1.14 的另一个错误修复版本正式发布。 此版本包括 67 个错误和漏洞修复以及 Flink 1.14 的小改进。您可在下面找到所有错误修复和改进的列表(不包括对构建基础架构和构建稳定性的改进)。有关所有更改的完整列表,请参阅:JIRA 列表。 我们强烈建议所有用户升级到 Flink 1.14.5 版本。 原文:The Apache Flink Community is pleased to announce another bug fix release for Flink 1.14.This release includes 67 bugs, vulnerability fixes and minor improvements for Flink 1.14. Below you will find a list of all bugfixes and improvements...