2.熟悉redis分布式缓存,kafka消息组件.
3.大规模分布式系统开发,维护经验,有故障处理能力
###########
spark,flink相关大数据处理技术,分析和挖掘用户画像和行为特征,采用协同过滤,ALS,UCB,DeepFM等先关推荐算法 进行个性化推荐;
基于文本,语意相关性特征(vpcg,rocchio),结合场景化规则和LR,XGBoost,GBDT,DNN等相关算法预测用户点击率,提升搜索准确性;
基于NLP关键字,摘要提取相关算法和技术(TextRank,word2vec),优化SEO,优化文章关键字和主题提取的准确性;
基于NLP的情感分析和文本分类相关技术(TexxtCNN,CNN),提升舆情监控系统中用户负面声音和声音分类预测的准确性,及时采集用户负面舆情并进行可视化;未来还会基于NLP意图识别和知识...
熟悉常用的机器学习分类,聚类的算法原理和特点;
熟悉深度学习相关模型CNN,RNN,LSTM等相关原理,使用场景,能够针对场景进行建模和优化;
具有特征工程优化,embedding,模型参数和性能调优化,智能推荐,用户画像分析,NLP相关经验;
####面试问题######
宽窄依赖
redis 排序底层原理
跳表
##########
IDEA设置tabs多行显示:
idea => Settings => Editor => Editor Tabs => Show tabs in single row
##########
解决IDEA cannot resolve symbol flink暗灰色显示
https://blog.csdn.net/u012369535/article/details/96317565
###########
[ERROR] Failed to execute goal org.scala-tools:maven-scala-plugin:2.15.2:compile (default) on project NewsFeed: wrap: org.apache.commons.exec.Execute Exception: Process exited with an error: -10000(Exit value: -10000) -> [Help 1]
解决方法:https://stackoverflow.com/questions/50252787/scala-maven-plugin-failed-to-execute
That is a very old version of the plugin (dating to around 2010), and may not be compatible with recent Java & Scala releases. Incidentally, it has been renamed to the scala-maven-plugin
and the latest release is 3.3.2:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.3.2</version>
<!-- etc. -->
</plugin>
Give that a try...
Also, I strongly recommend using SBT over Maven if you're primarily working with Scala (SBT handles combined Java and Scala builds too). It has a steeper learning curve than Maven, but is well worth the effort...
关于Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.1:compile
https://stackoverflow.com/questions/28004552/problems-while-compiling-spark-with-maven
#########
Spark Streaming流式处理
https://www.cnblogs.com/jifengblog/p/9372266.html
KafkaUtils.createDirectStream
基于Direct的方式,spark1.3引入,这个方法会创建一个直接从Kafka代理获取消息的输入流,不使用任何接受器,简化并行读取,高性能,一次且仅一次的事务机制
KafkaUtils.createDstream
基于receiver的方式,是使用Kafka的高层次Consumer API来实现的
对比:
基于receiver的方式,是使用Kafka的高阶API来在ZooKeeper中保存消费过的offset的。这是消费Kafka数据的传统方式。这种方式配合着WAL机制可以保证数据零丢失的高可靠性,但是却无法保证数据被处理一次且仅一次,可能会处理两次。因为Spark和ZooKeeper之间可能是不同步的。
基于direct的方式,使用kafka的简单api,Spark Streaming自己就负责追踪消费的offset,并保存在checkpoint中。Spark自己一定是同步的,因此可以保证数据是消费一次且仅消费一次。
在实际生产环境中大都用Direct方式
日志 通过kafka 用户实时画像 存入 redis
日志→用户长期画像 存入redis
新闻→通过kafka 内容去重(分词,simhash)→文本分类(主题,关键词,标签) 存入redis/模型训练
redis → 推荐(热点推荐,长短时推荐列表,召回,排序)