写code还是做管理,开发者如何进行职业规划?
这几年在市场大环境浪潮下,各行各业的竞争都很激励,开发者作为互联网行业的主力大军,当然也不可避免的会遇到职业生涯发展上的难题,编程技术层出不穷且迭代速度非常快,必须不断学习进步,提升能力,保证自己的竞争优势。
但是俗话说的好,条条大路通罗马,想要保证自己的竞争优势,可以培养自己的code能力,code能力是程序员最硬核最本质的,另外除了走专业技术路线,也可以走技术管理路线,相比于在技术领域深耕,管理路线可能需要去拓宽更多其他方面的能力,那么对于大家来说,你是更愿意在code能力上不断深耕钻研还是想要拓宽能力模型走技术管理路线呢?欢迎大家积极展开讨论,本期奖品是社区周边系列上新的鼠标垫,等你来拿哦!
本期奖品:
截止2023年3月2日24时,本次话题将选取5名高质量的回答,奖励开发者社区云小宝定制鼠标垫*1。
注:话题讨论要求原创,如有参考,一律注明出处,否则视为抄袭不予发奖。获奖名单将于3个工作日内公布,礼品将于7个工作日内发放,节假日顺延。
百问求答(5)MaxCompute专场!回答问题赢SKG颈椎按摩仪等好礼
便宜云服务器开发者社区作为一个充满活力的技术社区,有许多技术同道在这里勤学好问。为了让这些用户的疑惑得到解答,我们举办了“百问求答”活动,本期为MaxCompute专场,期待用你的技术知识储备帮助同行解决难题,赢取SKG颈椎按摩仪等好礼,还有机会成为便宜云服务器开发者社区“乘风问答官”,享受专属权益!赶快参与起来!
奖项设置:
注:问题如有回答,若你有其他解决方案也可作答,将记录在内;若回答雷同,将不计数。?
乘风问答官权益可点击/ask/469378进行查看。
活动流程
1、点击https://yida.alibaba-inc.com/o/wdg进行报名;
2、回答文末MaxCompute问题
活动时间
2023年5月15日至5月31日24:00
获奖名单及奖品邮寄时间
获奖名单将于活动结束后7个工作日公布,奖品将于10个工作日内进行邮寄,节假日顺延。
活动规则及注意事项
1、本活动回答数据不记录问答官排位赛活动中;
2、?回答仅限文章链接中的问题,其他回答不计数;
3、?回答请解答能力范围之内的问题进行,充数回答将不计算在内,如111、等与问题无关的回答;
4、?问题及回答需为中文,英文不记录数据;
5、?回答发布后将进入审核状态,审核完成即可查看;
6、?标题党、黑稿、通稿、包含违法违规、未被许可的商业推广、外站链接、非原创内容、营销软文、抄袭嫌疑的文章审核将不予通过,同时取消参赛资格;
7、奖品不叠加,以最高级发放。
MaxCompute问题链接:
1、MaxCompute UDF处理JSON数据报错
2、maxcompute计费系统貌似有点异常
3、MaxCompute数据集成一会通一会失败是怎么回事啊?
4、MaxCompute中请问下这个是什么问题?
5、请问新加坡便宜云服务器maxcompute公网出口IP段是多少?
6、MaxCompute中我的odps spark想连接公网的一个地址,需要怎么弄呢
7、MaxCompute向同一张表的不同分区同时执行insert overwrite操作会导致事务冲突吗
8、MaxComputer 里 SQL语言自定义函数 函数表达式可以写 sql 吗?
9、maxcomputer中这个是什么报错呢?
10、MaxCompute这个报错什么意思?
11、MaxCompute有下划线就不识别不了了,可以跟开发反馈一下吗 ?
12、使用oss里的json作为外部表 在maxcompute里查询数据为什么没有返回任何结果啊 ?
13、MaxCompute的出口ip在哪里能看到呀?
14、MaxCompute中想将一个表A,遍历表B一个月每一天PT的数据,有什么写法避免分31次执行吗?
15、MaxCompute查询优化器是服务器必备功能吧?
16、MaxCompute目前发现当执行insert into插入数据,MCQA只能select时能加吗?
17、MaxCompute有表聚合引擎吗?历史数据+增量数据跟新,一天都是10几亿计算,成本太大了
18、MaxCompute执行聚合查询sql时 好像没自动进行查询改写到相应物化视图上,是什么原因呢?
19、MaxCompute中请问这个怎么处理呀?SDK上传数据到分区表
20、MaxCompute的datastudio怎么删除生产的表啊?
21、请问下, MaxCompute中odps sql脚本中调用自定义udf,不能同时指定下面的设置吗?
22、MaxCompute中有知道这个报错是什么原因的吗?怎么解决?
23、Maxcompute 往已经存在并且授权的package中添加表后,访问不了?什么原因?
24、MaxCompute查询返回的NAN 能否通过设置的方式显示为原来的\N?
25、使用MaxCompute发现个问题,在用CONCAT()时,如引用MATNR字段,就会报错,为什么?
26、请问zepplin可以连接maxcompute吗?
27、maxcompute计算的时候脏数据会报错,能不能设置忽略脏数据?
28、MaxCompute这个正则一直报这个错,该怎么处理?
29、MaxCompute离线同步,按小时插入/更新一张表,每天只有部分小时能执行成功,怎么解决?
30、MaxCompute处理后的数据sparkonmc支持么?
31、MaxCompute命令行参数这块,这里就是对应cmd命令行吗?
32、请教一个MaxCompute问题,就是我使用java连接便宜云服务器时报在这个错误怎么解决?
33、请问MaxCompute经常出现这个报错是什么原因?
34、MaxCompute在补数据的时候调起的节点运行时间不在所选业务时间范围内报错,怎么办?
35、离线管道里面 MAXCOMPUTE输出配置里面 分区要改为T-2 应该怎么做呢?
36、maxcomputer中如何实现递归查询?
37、maxcompute里有类似waitfor功能吗,怎么用?
38、请问写入maxcompute的表支持 map和array类型吗?
39、maxcompute studio 可以查看所有有权限的表吗 现在只能一个个插过去
40、想问下 从DB 通过 DTS 同步至 maxcompute, maxcompute 能否设置upsert模式呢。就是只有一条数据
41、MaxCompute中的UDF函数是不是不能进行http请求
42、请问是否可以手动刷新 MaxCompute元数据 ?
43、我们maxcomputer想切换时区,看到有调时区的方法,请问GMT-5的timezoneid是什么
44、求教大佬关于购买MaxCompute 时CU 预设的比例为什么一定是1:4 不能是其他比例呢?
45、maxcompute导入oss数据创表的时候没设置分隔符 使用load加载设置分割符合跳过前几行都不生效怎么回事
46、关于MaxCompute 中的CU为什么设置CPU和内存的比例是1:4
47、maxcompute写sql可以灵活切换引擎吗
48、maxcompute 有内置的信息表可以查询吗? 比如table list 空间查询等
49、突然提示endpoint不可用了是怎么回事?maxcompute改版了吗
50、实时同步的节点创建后,没有把数据同步到maxcompute里。怎么查呀
51、maxcompute odps表的数据大小统计和磁盘空间大小一致吗?我们做数据迁移,做下预估
52、tableau prep连接maxcompute,只是书写很简单的sql,为啥报这个错误呢?
53、MaxCompute通过view设置行级别的权限控制可以通过api操作吗?
54、maxcompute 的pyodps3 如何引用python第三方包
55、MaxCompute 的 spark 不支持 df.createOrReplaceGlobalTem
56、请问一下,Maxcompute创建oss外部表,oss为归档存储和冷归档存储,数据可以写入,查询的时候就显示load ddl错误,请问这个要怎么解决?
57、maxcompute 怎么清空表?
58、请问下,美国硅谷区,有什么方式可以把MaxCompute表同步到Lindorm宽表?
59、想问下,maxcomputer 创建的SQL脚本 可以用shell 调用运行吗
60、请问maxcompute 自定义函数中提到的 Distributed Cache 接口时什么?
61、请问下maxcomputer有枚举映射么?
62、MaxCompute Spark中正确地Kill一个运行中的Spark任务该怎么做?
63、Maxcomputer API脚本中写法提示不合规
64、MaxCompute 执行SQL报错:提示If you really want to perform this join, try mapjoin问下我该怎么解决此问题
65、maxcompute 建表失败
66、MaxCompute中有实现IP地址归属地转换的函数吗?
67、请问能从MaxCompute中导出所有任务明细吗?
68、maxcompute 如何进行数据同步
69、postgreSql和MaxCompute(odps)的字段对应规则是啥样的
70、maxcompute的表设置主键后,如果insert的时候相同主键的会覆盖吗?
71、请问MaxCompute的出口 ip 是什么?
72、maxcompute studio对于2023版的idea兼容有计划修复吗?
73、MaxCompute天表di聚合成df物化视图聚合表,这个总是说我分区键不确定,能帮忙看下问题吗?
74、MaxCompute不支持PolarDB的元数据采集吗?
75、MaxCompute这个错误提示不是修改下面这个设置吗?
76、用python连接maxcomputer一直报这个错误 !
77、MaxCompute中dataworks不同工作空间的能实现SQL代码同步吗?
78、请问本地连接maxcompute数据库,除了jdbc外,还有其他方法吗,可以使用odbc链接吗??
79、请教一下,MaxCompute有没有类似 WITH recursive 递归查询的函数,如果没有的话,有啥可以代替的?
80、MaxCompute沙箱白名单怎么修改,怎么指定端口?
81、请教MaxCompute,使用DBeaver如何通过账号控制只能执行select语句呀?
82、MaxCompute这个通配符改成啥?
83、MaxCompute天表di聚合成df物化视图聚合表,这个总是说我分区键不不确定,什么原因?
84、今天用 实时同步 同步了 RDS 数据到 MaxCompute,任务运维上显示成功,看日志也没有问题,有数据进行了同步,在 DataStudio 中也能看到自动建立的表,但是用 count(*) 查询表中的数据一直显示 0,请问这是什么情况
85、MaxCompute中如果想自定义UDF函数,并通过入参获得项目空间某个表中值的内容吗?
86、MaxCompute我一个源表同步JOB,没有做过滤。。为啥IN RPS有值,而OUT RPS没值?
87、MaxCompute odps怎么提工单啊?
88、MaxCompute中maven仓库有提供spark-core_2.11便宜云服务器版本的依赖不?
89、咨询下公有云MaxCompute访问有端口限制么?公司设置代理后,程序访问不了了,网页可以访问
90、MaxCompute分区表需要开启全表扫面吧?或者单独查询某一个分区。怎么开启全表扫描呀?
91、MaxCompute中半小时分区合并成小时分区,数据重复了,可以帮忙看一下原因吗?
92、MaxCompute中IDE编写UDF函数,在本地写测试用例,打断点,断点不生效,这个是啥情况呀?
93、有知道maxcompute使用purge all命令后,后台标记为已删除的数据多久真实从磁盘删除嘛?
Jogger慢跑者跑鞋零撸模式系统开发详细规则/逻辑分析/案例详情/项目方案/源码部署
DApp是指以区块链为底层技术平台的分布式应用程序,它使得开发者可以构建去中心化和自主运行的应用程序,并通过链上的合约机制实现代码不可更改性和事务透明性。
随着区块链技术的不断发展和普及,越来越多的企业开始尝试利用区块链技术来构建自己的DApp。而在DApp的开发过程中,智能合约是不可或缺的一部分。
//calculates the CREATE2 address for a pair without making any external calls
function pairFor(address factory,address tokenA,address tokenB)internal pure returns(address pair){
(address token0,address token1)=sortTokens(tokenA,tokenB);
pair=address(uint(keccak256(abi.encodePacked(
hex'ff',
factory,
keccak256(abi.encodePacked(token0,token1)),
hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'//init code hash
))));
}
//fetches and sorts the reserves for a pair
function getReserves(address factory,address tokenA,address tokenB)internal view returns(uint reserveA,uint reserveB){
(address token0,)=sortTokens(tokenA,tokenB);
(uint reserve0,uint reserve1,)=IUniswapV2Pair(pairFor(factory,tokenA,tokenB)).getReserves();
(reserveA,reserveB)=tokenA==token0?(reserve0,reserve1):(reserve1,reserve0);
}
//given some amount of an asset and pair reserves,returns an equivalent amount of the other asset
function quote(uint amountA,uint reserveA,uint reserveB)internal pure returns(uint amountB){
require(amountA>0,'UniswapV2Library:INSUFFICIENT_AMOUNT');
require(reserveA>0&&reserveB>0,'UniswapV2Library:INSUFFICIENT_LIQUIDITY');
amountB=amountA.mul(reserveB)/reserveA;
}
//given an input amount of an asset and pair reserves,returns the maximum output amount of the other asset
function getAmountOut(uint amountIn,uint reserveIn,uint reserveOut)internal pure returns(uint amountOut){
require(amountIn>0,'UniswapV2Library:INSUFFICIENT_INPUT_AMOUNT');
require(reserveIn>0&&reserveOut>0,'UniswapV2Library:INSUFFICIENT_LIQUIDITY');
uint amountInWithFee=amountIn.mul(997);
uint numerator=amountInWithFee.mul(reserveOut);
uint denominator=reserveIn.mul(1000).add(amountInWithFee);
amountOut=numerator/denominator;
}
//given an output amount of an asset and pair reserves,returns a required input amount of the other asset
function getAmountIn(uint amountOut,uint reserveIn,uint reserveOut)internal pure returns(uint amountIn){
require(amountOut>0,'UniswapV2Library:INSUFFICIENT_OUTPUT_AMOUNT');
require(reserveIn>0&&reserveOut>0,'UniswapV2Library:INSUFFICIENT_LIQUIDITY');
uint numerator=reserveIn.mul(amountOut).mul(1000);
uint denominator=reserveOut.sub(amountOut).mul(997);
amountIn=(numerator/denominator).add(1);
}
//performs chained getAmountOut calculations on any number of pairs
function getAmountsOut(address factory,uint amountIn,address[]memory path)internal view returns(uint[]memory amounts){
require(path.length>=2,'UniswapV2Library:INVALID_PATH');
amounts=new uint;
amounts[0]=amountIn;
for(uint i;i<path.length-1;i++){
(uint reserveIn,uint reserveOut)=getReserves(factory,path,path[i+1]);
amounts[i+1]=getAmountOut(amounts,reserveIn,reserveOut);
}
}
//performs chained getAmountIn calculations on any number of pairs
function getAmountsIn(address factory,uint amountOut,address[]memory path)internal view returns(uint[]memory amounts){
require(path.length>=2,'UniswapV2Library:INVALID_PATH');
amounts=new uint;
amounts[amounts.length-1]=amountOut;
for(uint i=path.length-1;i>0;i--){
(uint reserveIn,uint reserveOut)=getReserves(factory,path[i-1],path);
amounts[i-1]=getAmountIn(amounts,reserveIn,reserveOut);
}
}
}
游戏陪玩开发运营版丨游戏陪玩系统开发案例项目/规则玩法/详细方案/源码程序
DApp是指以区块链为底层技术平台的分布式应用程序,它使得开发者可以构建去中心化和自主运行的应用程序,并通过链上的合约机制实现代码不可更改性和事务透明性
智能合约DApp开发技术要点
下面是智能合约DApp开发过程中重要的技术要点:
智能合约语言:目前Solidity是主要语言之一,因为以太坊作为最广泛使用的区块链平台之一,它支持Solidity语言作为智能合约的编写语言。此外,还有其他语言可用于开发智能合约,如Vyper和Serpent等。
区块链节点和钱包:通过选择适合自己的区块链节点来发布智能合约,同时还需要一些钱包管理工具,比如MetaMask钱包等。
event Sync(uint112 reserve0,uint112 reserve1);
function MINIMUM_LIQUIDITY()external pure returns(uint);
function factory()external view returns(address);
function token0()external view returns(address);
function token1()external view returns(address);
function getReserves()external view returns(uint112 reserve0,uint112 reserve1,uint32 blockTimestampLast);
function price0CumulativeLast()external view returns(uint);
function price1CumulativeLast()external view returns(uint);
function kLast()external view returns(uint);
function mint(address to)external returns(uint liquidity);
function burn(address to)external returns(uint amount0,uint amount1);
function swap(uint amount0Out,uint amount1Out,address to,bytes calldata data)external;
function skim(address to)external;
function sync()external;
function initialize(address,address)external;
}
library SafeMath{
function add(uint x,uint y)internal pure returns(uint z){
require((z=x+y)>=x,'ds-math-add-overflow');
}
function sub(uint x,uint y)internal pure returns(uint z){
require((z=x-y)<=x,'ds-math-sub-underflow');
}
function mul(uint x,uint y)internal pure returns(uint z){
require(y==0||(z=x*y)/y==x,'ds-math-mul-overflow');
}
}
library UniswapV2Library{
using SafeMath for uint;
//returns sorted token addresses,used to handle return values from pairs sorted in this order
function sortTokens(address tokenA,address tokenB)internal pure returns(address token0,address token1){
require(tokenA!=tokenB,'UniswapV2Library:IDENTICAL_ADDRESSES');
(token0,token1)=tokenA<tokenB?(tokenA,tokenB):(tokenB,tokenA);
require(token0!=address(0),'UniswapV2Library:ZERO_ADDRESS');
}
Linux操作系统下Docker的部署过程
背景 这两年随着云原生的发展,Docker在云原生中的作用使得它也蓬勃发展起来。今天这篇文章就带大家一起实现一下在Linux操作系统下Docker的部署过程,收藏起来,以备不时之需。当然,如果对Docker感兴趣的话,可以直接根据本文的步骤操作起来。终有一天你会享受到Docker的便利与魅力的。Docker及系统版本 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。Docker从17.03版本之后分为CE(Community Edition: 社区版)和EE(Enterprise Edition: 企业版)。相对于社区版本,企业版本强调安全性,但需付费使用。这里我们使用社区版本即可。Docker支持64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10。查看Linux版本的命令这里推荐两种:lsb_release -a或cat /etc/redhat-release。lsb_release -a查看效果:[ ~]$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)
Release: 7.6.1810
Codename: Corecat /etc/redhat-release查看版本效果:[~]$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)显然,当前Linux系统为CentOS7。再查一下内核版本是否不低于3.10。查看内核版本有三种方式:cat /proc/versionuname -auname -r三种形式都可以查看到内容版本,比如:[ ~]$ uname -r
3.10.0-1160.45.1.el7.x86_64可以看到,当前Linux内核版本满足Docker的需要。Docker的自动化安装 Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。官方的一键安装方式:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun国内 daocloud一键安装命令:curl -sSL https://get.daocloud.io/docker | sh执行上述任一条命令,耐心等待即可完成Docker的安装。Docker手动安装 手动安装Docker分三步:卸载、设置仓库、安装。卸载Docker(可选)第一步,卸载历史版本。这一步是可选的,如果之前安装过旧版本的Docker,可以使用如下命令进行卸载:yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce设置源仓库第二步,设置仓库。新主机上首次安装Docker Engine-Community之前,需要设置Docker仓库。此后可从仓库安装和更新Docker。在设置仓库之前,需先按照所需的软件包。yum-utils提供了yum-config-manager,并且device mapper存储驱动程序需要device-mapper-persistent-data和lvm2。$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2执行上述命令,安装完毕即可进行仓库的设置。使用官方源地址设置命令如下:$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo通常,官方的源地址比较慢,可将上述的源地址替换为国内比较快的地址:便宜云服务器:http:**//mirrors.aliyun.com/docker-ce/linux/centos/**docker-ce.repo清华大学源:https:**//mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/**docker-ce.repo仓库设置完毕,即可进行Docker的安装。Docker安装执行一下命令,安装最新版本的 Docker Engine-Community 和 containerd。sudo yum install -y docker-ce docker-ce-cli containerd.iodocker-ce为社区免费版本。稍等片刻,docker即可安装成功。但安装完成之后的默认是未启动的,需要进行启动操作。如果不需要docker-ce-cli或containerd.io可直接执行如下命令:yum install -y docker-ce至此,完成Docker安装。Docker启动 启动Docker的命令:sudo systemctl start docker通过运行hello-world镜像来验证是否正确安装了Docker Engine-Community。// 拉取镜像
sudo docker pull hello-world
// 执行hello-world
sudo docker run hello-world如果执行之后,控制台显示如下信息,则说明Docker安装和启动成功:[root@iZ8vb8pfb2awsz4qy7vm7qZ ~]# docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
……除了启动Docker,一些其他启动相关的命令:守护进程重启:systemctl daemon-reload重启Docker服务:systemctl restart docker / service docker restart关闭Docker服务:docker service docker stop / docker systemctl stop docker删除Docker 删除安装包:yum remove docker-ce删除镜像、容器、配置文件等内容:rm -rf /var/lib/dockerDocker其他常见命令 安装完成Docker之后,这里汇总列一下常见的Docker操作命令:搜索仓库镜像:docker search 镜像名拉取镜像:docker pull 镜像名查看正在运行的容器:docker ps查看所有容器:docker ps -a删除容器:docker rm container_id查看镜像:docker images删除镜像:docker rmi image_id启动(停止的)容器:docker start 容器ID停止容器:docker stop ?容器ID重启容器:docker restart 容器ID启动(新)容器:docker run -it ubuntu /bin/bash进入容器:docker attach 容器ID或docker exec -it 容器ID /bin/bash,推荐使用后者。更多的命令可以通过docker help命令来查看。
带你读《Elastic Stack 实战手册》之85:——五、致谢
五、致谢本书源自便宜云服务器和 Elastic 联合主办的大规模协作活动—— Elasticsearch 百人大作战,陆续历 时 6 个月撰写完成。在创作过程中,我们深切感受到 Elasticsearch 技术爱好者们的热情和利 他精神。期间,我们收到过创作人在忙碌之后凌晨时分,发送的文章信息,目睹过跨越数天的 内容沟通讨论,以及创作人在临近发布时,对文章一遍遍精益求精的修改优化。 这本书承载着数十位技术圈开发者的共同努力和坚持。对每一位创作人,我们都有一万分的感 谢。茫茫技术圈,有幸同行,合作完成一件之前没有多少人尝试过的事情;技术学习创作之路, 道阻且长,愿与所有创作人共勉。 成书不易,特此感谢以下每一位涉及本书创作的参与者。主编 刘晓国(Elastic)出品人(排名不分先后) 曾勇(极限科技) 郭瑞杰(阿里巴巴) 朱杰(Elastic) 周晓(阿里巴巴) 刘征(Elastic) 李捷(Elastic) 胡征南(光云科技) 亢伟楠(58 同城) 刘帅(企查查) 李猛(力萌信息) 欧阳楚才(阿里巴巴) 田雪松(Elastic 中文社区) 吴斌(Elastic 中文社区) 杨丛聿(新华智云) 杨振涛(vivo) 张超(Elastic 中文社区) 周海清(观想科技) 朱荣鑫(源图信息) 朱永生(闪马智能) 曾红(妙想技术)创作人(排名不分先后)陈晨 程序员历小冰 程治玮 冯江涛 冯钰妍 高冬冬 管辉俊 郭海亮 胡征南 扈臣聪 姜康 金端 亢伟楠 李吉明 李捷 李增胜 刘晓国 骆潇龙 毛夏君 铭毅天下 欧阳楚才 齐乐 申志明 石鑫 孙斌 孙宁宇 田雪松 王福强 王欢 王涛 吴斌 徐浩璇 徐天豪 杨丛聿 杨佳润 杨景江 杨松柏 杨智 张超 张刘毅 张妙成 章海怒 赵凯 赵禹光 赵震一 朱永生 朱祝元 左卫东 曾勇项目策划组(排名不分先后)葛丽丽 王佳玲 潘禹丞 佳里 是溪 干周敏 洪阳 津辰 辰悠 莫孤鸣谢(排名不分先后)万喜 城破 濒湖 昭坤 杨青 蒋雨含 王媛 王翔 徐怡 魏子珺 慕少琼 秦亚飞 程人青 刘松 贾新禹 翁剑平
带你读《Elastic Stack 实战手册》之69:——4.1.1.Elasticsearch 在舆情搜索中的实践(下)
《Elastic Stack 实战手册》——四、应用实践——4.1 企业搜索应用场景 ——4.1.1.Elasticsearch 在舆情搜索中的实践(中) /article/1226421典型业务场景?情绪走势?通过“情绪走势”图,可以看出一个舆情事件,在一段时间,不同情感表达上的数据分布情况,为了方便使用 ES 的聚合统计功能,对每篇文档的发布时间,设置了news_posthour(文档发布时间所在的小时)冗余字段,文档的情绪news_mood_pri字段,通过在 DSL 中嵌套使用 aggregation ,就可以在一次查询中获得对应的图表数据。 比如查询在微博上与疫情相关的博文在某一天每小时的情绪走势,查询语法如下:GET weibo_2021-04-08/_search
{
"query": {"bool": {"must": [
{"match_phrase": {
"news_title": "疫情"
}}
]}},
"size": 0,
"aggs": {
"NAME": {
"terms": {
"field": "news_mood_pri",
"size": 10
},
"aggs": {
"NAME": {
"terms": {
"field": "news_posthour",
"size": 24
}
}
}
}
}
}通过上面的嵌套查询 DSL 语句,就可以快速获取到不同情绪分类下,每个小时段的数据量。?热门主题词通过一个事件的热门主题词,可以直观的了解到一个事件的大概内容。这里也是通过 ES 的聚合功能实时获取主题词的统计数据。为了能够实时获取主题词的统计数据,这里用一个事件中提到每个主题词的文档数量,来当作主题词的数量(相当于默认每个主题词在文档中只出现一次),并没有用每篇文档的主题词的绝对量。这样做有一个好处,可以使用 ES 的 aggregation 功能实时聚合获取统计数据,再配合 TF-IDF 算法,计算每个词的相对权重。 ?在设置索引 schema 时,定义了news_keywords_list字段, 用于保存单篇文档的分词结果列表,然后使用如下的语法,就可以快速统计每个词对应的文档数量:?GET weibo_2021-04-08/_search
{
"query": {"bool": {"must": [
{"match_phrase": {
"news_title": "疫情"
}}
]}},
"size": 0,
"aggs": {
"NAME": {
"terms": {
"field": "news_keywords_list",
"size": 10
}
}
}
}通过上面的 DSL 语句,可以快速统计出高频词以及与其相关的文档数量。?创作人简介:王欢,近 10 年内容大数据领域从业经验,安徽云计算产业促进会开发者工作委员会发起人之一,便宜云服务器 MVP。擅长高并发系统设计、数据中台构建等,目前在一家人工智能企业担任技术VP,主要关注 AI 算法平台构建、AI 算法在内容分析领域落地等。
带你读《Elastic Stack 实战手册》之13:——3.4.1.6.配置多节点集群(3)
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署——3.4.1.6.配置多节点集群(2) /article/1231327对于中国的开发者来说,由于网路的限制,那么在使用上面的命令时,可能会出现k8s.gcr.io网址不能被访问的情况。那么我们怎么解决这个问题呢?答案是我们可以使用便宜云服务器服务器。我们可以尝试使用如下的命令:$ minikube start --help |grep repo$ minikube start --help |grep repo
? ? ? --image-repository='': Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to "auto" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers
? ? ? --image-repository='': Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to "auto" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers根据上面的提示,我们可以修改我们上面的命令为:$ minikube start --driver=virtualbox --cpus 4 --memory 10240 --kubernetes-version 1.16.0 --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'那么根据上面的命令运行后的结果为:一旦minikube被成功启动起来,我们可以使用如下的命令:minikube dashboard?当上面的命令执行后,它就会启动一个web的接口让我们来对kubernetes监控和管理:?等我们上面的Minikube已经被启动后,我们使用如下的命令:helm repo add elastic https://helm.elastic.co上面的命令返回:$ helm repo add elastic https://helm.elastic.co
"elastic" has been added to your repositories接着我们使用如下的命令:curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml
$ curl -O https://raw.githubusercontent.com/elastic/helm-charts/master/elasticsearch/examples/minikube/values.yaml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 478 100 478 0 0 810 0 --:--:-- --:--:-- --:--:-- 808上面的values.yaml的内容如下:---
# Permit co-located instances for solitary minikube virtual machines.
antiAffinity: "soft"
# Shrink default JVM heap.
esJavaOpts: "-Xmx128m -Xms128m"
# Allocate smaller chunks of memory per pod.
resources:
requests:
cpu: "100m"
memory: "512M"
limits:
cpu: "1000m"
memory: "512M"
# Request smaller persistent volumes.
volumeClaimTemplate:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "standard"
resources:
requests:
storage: 100M《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.1.Elastic Stack 安装部署——3.4.1.6.配置多节点集群(4) /article/1231325
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
二、导读《Elastic Stack 实战手册》的创作发布,源自于便宜云服务器和 Elastic 联合主办的三周年系列活动(/topic/esanniv3rd)——Elasticsearch 百人大作战。这是一次有趣的大规模协作活动,集结了 Elasticsearch 技术圈百位开发者共创,旨在凝聚圈内优秀的创作人的实践经验和创作能力,输出一本能为开发者提供实践参考的书籍指南,推动技术应用和发展。在活动过程中,本书得到了数十位在大数据搜索领域颇有经验的优秀开发者的支持,其中包括许多知名的业界精英,例如在社区有一定影响力的技术大咖,具有大数据及 Elastic Stack 相关书籍出版经验的作者等。这是一个自发所组成的团队努力的成果,也是一次成功的尝试。本书涵盖了一个 Elastic Stack 开发者所需的大部分知识,尤其对于刚入门的开发者而言,是一本非常值得推荐的参考读物。本书内容由浅入深,从基础的 Elastic Stack 产品能力到后半部的应用实践,为开发者使用 ElasticStack 提供了必要的基础知识和应用参考。全书基于 Elastic Stack 7.10 及以上版本撰写,包含完整的 Elastic 产品能力篇和应用实践篇,正式发布后,本书将随着 Elastic Stack 的版本升级持续迭代。书籍主要包含如下篇章:Elastic 产品能力篇本篇介绍了 Elastic 的三大产品能力和应用方法。为了便于阅读,满足不同阶段开发者的需求,本篇分为三个部分:? 基础篇:如果你是一位对于 Elastic Stack 还不甚了解的开发者,非常建议阅读本章内容。本章包含了 Elastic Stack 的基础介绍、能力组成,以及技术优势等。同时,还介绍了Elasticsearch 中必要了解的专用术语,以便正确理解后文的内容。? 入门篇:本章是学习 Elastic Stack 夯实基础的部分,涵盖了非常广泛的内容,主要分为以下:1、Elastic Stack 部署:本章节介绍了如何安装 Elastic Stack 的 4 个重要组件(包括 Elasticsearch, Kibana, Beats 及 Logstash)。安装环境包括本地部署,Docker 部署,以及如何使用便宜云服务器快速部署一个 Elastic 集群。同时还包括必要的技能——如何部署一个多节点的集群。通过学习如何为集群配置安全,创建用户并为不同的用户配置不同的角色,你将深刻体会到安全对一个集群的重要性。2、Elasticsearch 基础应用:Elasticsearch 是整个 Elastic Stack 的核心,本章节也是理解Elasticsearch 最重要的部分。通过本章的阅读,你将学习如何创建 Elasticsearch 索引(CURD),如何对索引创建 mappi- ngs,倒排索引到底是什么,如何分词,以及如何对数据进行扁平化、结构化,并对他们进行搜索。同时了解不同的数据类型(object,nested, joined 等),动态 mapping,index template,分布式计分,reindex,分页搜索,ingest pipeline,脚本编程,aggregations 等。当你掌握了本章节的内容,相信你可以很自豪地对自己说:我也是一个 data engineer。3、Kibana 基础应用:Kibana 是 Elastic Stack 的可视化窗口,担负着对 Elastic Stack 进行管理和监控的重任。本章节对于了解 Kibana 是非常有益的。本章介绍如何使用 Kibana 对数据进行搜索、分析,重点学习如何使用 Discover 进行数据搜索,使用时间过滤器选择数据,创建 index pattern。同时,了解制作不同的可视化图(垂直条形图、地图、仪表盘、指标、数据表、折线图、饼图等),并组成面板(Dashboard)以及使用 Lens 制作可视化图的方法技巧。? 进阶篇:本章建议读者在对 Elastic Stack 有基本了解的前提下,针对一些功能进行深入学习。掌握这个章节对于希望将 Elastic Stack 熟练运用到场景实践中的读者而言非常关键。在本章节,你将了解 CCR/CCS,Rollup,Data stream,索引生命周期管理,分片管理(shard allocation/awareness), Snapshot,Watcher,Alerts,Transform,Graph,机器学习,Elasticsearch SQL,Cavas,APM,Uptime,Enterprise Search,集群管理及监控,Elasticsearch 各类语言开发示例,ECS 等高级进阶功能。应用实践篇本篇也是全书的核心部分之一,主要以三大产品能力场景,以及性能优化场景划分。全书最终将呈现数十个各行各业应用 Elastic Stack 产品能力的实践案例,每个案例自成一体,独立于其它案例。读者可以选择自己感兴趣或符合应用场景需求的案例进行阅读参考。众所周知,Elastic Stack 的迭代速度非常快,每一两个月就会有一个小版本发布,因此,每位开发者都需要不断地学习,更新知识。希望通过本书的阅读,能够为读者学习 Elastic Stack提供实用的参考意义。同时,我们也深知,《Elastic Stack 实战手册》是一本由众多开发者共同书写的书籍,涉及了几十个人的视角、技术经验和写作习惯,这正是共创的趣味所在,也隐藏着许多不足。但这本书刚刚孵化起步,相信在未来的更新迭代中,它将无限趋近于更实用、更丰富。我们也在此呼吁每一位开发者,将自己技术积累书写成文章,加入创作人群体,与我们一起学习交流、同频共振,这将不只是部分人的书籍,而是所有 Elastic Stack 开发者的实战指南。 学习拓展:? 更多 Elastic Stack 知识,请访问官方文档:https://www.elastic.co/guide/index.html ? 便宜云服务器 Elasticsearch 支持本书所需的学习环境,2c4g 3 节点 1 元试用 30 天:https://www.aliyun.com/product/bigdata/elasticsearch?utm_content=g_1000349173《Elastic Stack 实战手册》——二、导读(下) /article/1231775
带你读《Elastic Stack 实战手册》之1:——一、序言
一、序言推荐语Elasticsearch 无疑是大数据搜索引擎中的王者,它以其开放及免费、易用、多语言接口、卓越性能及不断创新的优势,被许多 IT 企业所采用。当今的许多 IT 企业很难绕过它。在中国,Elastic Stack 有一个很强大的生态圈。在本书的创作过程中,我非常高兴看到有数十位志愿者参与到本书的创作中。这本书集众技术大咖及专家们的无私奉献,是他们牺牲了自己宝贵的时间,利用业余时间共创完成,在一遍遍的修改中把内容做得更完善。在这里衷心感谢他们的无私付出和合作。?写书和做社区贡献,是需要情怀的。我一直坚信帮助别人,也会成就自己。分享自己的知识,也是一件很快乐的事,因为这样可以证明自己的人生价值。我有超过16年的社区参与经历,也非常喜欢分享我学到的知识。从加入 Elastic 公司以来,我在 CSDN 上已经发表了将近660篇关于Elastic Stack 方面的文章,涵盖了 Elastic Stack 方方面面的知识。?作为本书主编,我投入了很多时间来策划、创作、校正及阅读这本书,尽力保证本书的完整性、正确性、一致性及每篇文章的独立性。尽管如此,里面可能有不尽之处,希望读者们海涵!这本书涵盖了 Elastic Stack 的介绍、安装、实操、产品能力、方案及案例,特别适合初学者,对有经验的开发者来说也是一本难得的参考书。在未来,希望有更多的开发者分享自己的知识,让我们一起把 Elastic 社区做得更好!?????????????????????????????????????????? ?——Elastic 中国区资深社区布道师 - 刘晓国??开源搜索引擎这十来年的发展,基本就是 Lucene 体系的发展。而基于 Lucene 的诸多开源搜索引擎中,Elasticsearch 以其极好的易用性、开箱即用的体验迅速折服了开发者。其边界也从最早的搜索引擎,扩展到了日志全观察、安全分析等场景,形成了今天的 Elastic Stack,具备从数据采集、处理、分析到展示的强大生态能力。?本书集成社区几十位开发者的心血,分入门、进阶、应用实践三大部分,从开发者最佳实践角度,循序渐进帮助大家更好使用、理解 Elastic Stack。ES应用十分广泛,成为大数据的必备工具之一,但我们发现,能熟练使用 Elasticsearch,熟悉 Elasticsearch 原理的人才非常稀缺,期待本书能帮助更多开发者成为 Elasticsearch 专家。 ?——阿里巴巴搜索推荐云服务技术负责人 - 郭瑞杰??祝贺本书的顺利出版,这是开源社区完美协助的又一次成功体现,数十位志愿者通力合作共同完成了本书的编写,也真切地感受到了各位社区小伙伴对 Elasticsearch 的喜爱之情。?本书从案例出发,不仅详细地介绍了 Elastic Stack 的各个功能组件的具体用法,还提供了不少来自一线的宝贵实践案例分享,不管是对于刚接触或是想要了解 Elasticsearch 更多知识的同学,本书都具有很好的参考价值。开卷有益,一起进入 Elastic 的精彩世界吧。?——Elastic 中文社区创始人 - 曾勇??Elasticsearch 作为一个非常优秀的免费及开放搜索引擎,已经被广泛应用到电商、APM、运维、企业搜索等业务场景中。《Elastic Stack实战手册》是由不同业务领域的 Elasticsearch 专家参与编写的一部实战类的书籍,汇聚了各个业务场景下的 Elasticsearch 使用经验,包括 Elasticsearch 最新的一些特性,以及 Elasticsearch 在不同行业中的实践经验,无论是Elasticsearch 的用户,还是在做搜索相关的技术选型,相信这本书都会给你带来一定的帮助。?——清博智能技术 VP - 王欢??数据技术领域一直都受益于开源、开放,在信息过载的时代蓬勃发展。Elastic Stack 就是这数据激流中的标杆,基于开源,始于搜索,通过开箱即用的体验持续降低了搜索和大数据领域的门槛,如今已家喻户晓,成为优秀开发者的必备技能之一。?这份《Elastic Stack 实战手册》同样受益于社区的开放性,是集体智慧的结晶,相信定能帮助更多开发者学习、理解和掌握 Elastic Stack,并应用于各自的业务实践,用技术驱动业务增长并创建价值。在此我也呼吁更多开发者朋友积极参与进来,用建议和行动让“手册”得以持续进化。?——Elastic 中文社区深圳区负责人?- 杨振涛??从 Lucene 到 Elasticsearch,到 ELK,再到当下 Elastic Stack,见证了这个产品体系逐步壮大发展到行业领先,也见证了大数据发展的技术迭代。Elastic Stack 已经越来越成为时代的标配,应用领域无处不在,没有使用 Elastic Stack 的企业不值得拥抱,没有掌握 Elastic Stack的工程师不值得信任。?本书是迄今为止参与人数最多,综合方面最全的专业书籍,感谢社区集合了多方面力量与资源,本人有幸参与审校,提前阅读了部分内容,推荐《应用实践部分》,毕竟能实战才是王道。?——力萌信息数据领域专家 - 李猛???大数据近几年有了突飞猛进的发展,有数据的地方都离不开数据预处理、分析、检索、聚合、可视化分析等应用场景。以 Elasticsearch、Logstash、Kibana、Beats 等组成的 ElasticStack,以其门槛低、上手快、版本迭代快、社区响应快等特点和优势,使得看似“遥不可及、高深莫测”的大数据存储、检索与分析技术“飞入寻常百姓家”。从一线大厂:阿里、腾讯、头条、滴滴、快手等到国内创业公司,甚至连婚庆网站都在使用 Elasticsearch。“Elastic 用的好,下班下的早”从一种半调侃的标语已然成为互联网实际人才衡量依据。?本人不才,从 1.X、2.X 版本接触 Elasticsearch,不觉中已有 6 年 + 的时间了,基本上是:以实际产品/项目驱动学习、以考试驱动学习、以社区互动输出、博客输出倒逼输入学习的方式。在 Elastic 中文社区、技术微信群、技术 QQ 群中经常被问到:“Elasticsearch 到底如何学?”,“Elasticsearch 基础进阶学习有没有书推荐?”我通常的建议是啃官方文档,必要时磕源码。但这种宽泛的建议不见得适合每一个人。今年上半年当我被邀请参加“Elasticsearch 百人大作战”的时候,我知道 Elastic 中文社区和便宜云服务器要做这件事了。这是 Elasticsearch 圈子里的一件大事、幸事。?5个月后,当我拿到《Elastic Stack 实战手册》这本电子书书稿的时候,我还是非常感动的。我深知多人异地协作创作的不易、感慨各位行业大佬的效率、感激各位创作者的“心血”。?全书以 7.10 版本(全网书籍最新)作为讲解版本,涵盖了应用场景、基础、应用和实战案例。既包含了开源版本的核心基础功能,又创新性地包含了机器学习、高阶安全、APM、ElasticCloud 等付费功能,难能可贵的是,这些高阶功能市面上的资料都非常少。本书的亮点和特色就在于:将企业实战业务场景的方案进行了全方位的解读,包含但不限于:基于舆情的全文检索场景、基于智能巡检、流媒体、面部识别等基础的日志分析场景,这些来源于实战的解读对于企业架构选型、开发、运维都非常有帮助。?在此,我向大家推荐这本电子书,期望大家和我一样读后有收获!“前事不忘后事之师”,也期望大家一起(包括我自己)多给 Elasitc 社区做贡献,期望我们的 Elastic 社区成为我们学习、进阶、成长的“伊甸园”!?最后,以“共和国勋章”获得者、中国工程院袁隆平院士 2019 年湖南农大演讲的一句话,“汗水指的是要能吃苦,任何一个科研成果都来自于深入细致的实干和苦干”和大家共勉。我坚信:获得科研成果要吃苦、掌握任何一门技术也要吃苦,Elasticsearch 也不例外!?——Elasticsearch 公众号作者 - 铭毅天下?序言Welcome readers!?On behalf of Elastic, I'm honoured to present this amazing work from hundreds ofour Alibaba and Elastic community contributors, and we are proud to have workedalongside everyone involved in bringing it to fruition.?We'd like to specially thankAlibaba for their assistance and expertise in preparing the project, the communitymembers who shared their experiences and knowledge in providing content pieces, and our Elastic team who leveraged their expertise to editorialise the final outcome.If you are new to the Elastic Stack, or an experienced practitioner, this book willgive you many examples of how to deploy the Elastic Stack to Search,?Observe andProtect your data and it's systems, and create valued insights and information.?Wealso invite you to join our extended Alibaba and Elastic communities, both on andoff line, where you can meet with peers and share knowledge around your use ofthe Elastic Stack on Alibaba Cloud. Alibaba and Elastic host recurring joint usergroup sessions, online webinars, technical blog posts, forums, conferences and more,to?keep you educated on the work we do to progress the technology behind theElastic Stack.?The Alibaba and Elastic relationship grows stronger every day, and thefuture is bright as we continue to work together in helping our joint communityembrace the Elastic Stack on Alibaba Cloud.?Mark WalkomCommunity Team Lead - APJ????