1.Redis数据库用到了哪几种数据结构及各种数据结构的应用场景
这位小哥写的不错-By-心跳的旋律ing-Title-redis5种数据结构讲解及使用场景-传送门
1.String类型
2.Hash类型
3.List类型
4.Set类型
5.Sortedset
2.ElasticSearch中有什么情情况下会出现脑裂,怎样有效避免脑裂?
原因有两个:网络质量不好或mstaer节点负载过高
1.使用独占的主节点可以避免负载过高
2.设置一个参数:discovery.zen.minimum_master_node 这个参数决定了至少有多少存活的节点,才选举产生新的master节点。
discovery.zen.minimum_master_node: (master_eligible_nodes / 2) + 1
换句话说,如果有三个主节点,那么最小主节点应该设置为(3/2)+ 1或2
discovery.zen.minimum_master_nodes:2
3.如果集群网络环境不太好,建议将网络故障超时时间设置的长一点。为了保证网络,可以将es和spark或hadoop存在同一个机架
discovery.zen.ping_timeout(默认3秒)
3.ElasticSearch中有那些常见得到查询
ElasticSearch 支持所有的Lucene查询,并对其进行简化封装
1.WildcardQuery 通配符查询
2.TermQuery 词条查询
3.FuzzyQuery 相似度查询
4.BooleanQuery 布尔查询
4.有数据文件odydata.txt,请用SparkSQL做单词统计
import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}
object SparkSQLWordCount {
def main(args: Array[String]): Unit = {
val session: SparkSession = SparkSession.builder().appName("SparkSQLWordCount").master("local[2]").getOrCreate()
import session.implicits._
val ds: Dataset[String] = session.read.textFile("odydata.txt").flatMap(_.split(" "))
val df: DataFrame = ds.withColumnRenamed("value", "word")
df.createOrReplaceTempView("t_wc")
val dataFrame = session.sql("select word,count(*) counts from t_wc group by word order by counts desc")
dataFrame.show()
}
}
5.游戏运营项目中用到的技术?
emmmm
6.在用Hive处理的项目中,你能够做的优化有哪些?
根据@Hive编程指南 调优章节总结
1.使用EXPLAIN(查询计划)
2.限制调整
将hive.limit.optize.enable 属性设置为true之后在使用limit之后,可以对元数据进行抽样。缺点是,有可能的输入中的数据永远不会被处理到。
3.JOIN优化
小表放左边大表放右边,或者map-side JOIN
4.本地模式
设置hive.exec.mode.local.auto = true
5.并行执行
Hive会把一个查询转换成一个或者多个阶段。无依赖的job可以并行执行
6.严格模式
用于防止用户执行可能产生意想不到的不好的影响。
通过设置属性hive.mapred.mode 值为strict 可以禁止三种类型的查询
1>对于分区表,除非WHERE语句中含有分区字段过滤条件来限制数据范围,否则不允许执行。
2>对于使用了ORDER BY语句的查询,要求必须使用LIMIT语句
3>限制笛卡儿积的查询
7.调整mapper和reducer的个数
挡在共享集群上处理大任务时,为了控制利用情况,属性 hive.exec.reducers.max 显得非常重要。设置后可以阻止某个查询消耗太多的reducer资源。有必要将将这个属性配置到$HIVE_HOME/conf/hive-site.xml 文件中。对于这个属性值的一个计算公式如下:
(集群总reduce槽位个数 * 1.5) / (执行中的查询的平均的个数)
1.5倍是一个经验系数,为了防止未充分利用集群的情况
8.JVM重用
9.使用索引(0.7之后有索引,0.8之后添加了Bitmap索引实现)
10.动态分区调整
11.推测执行
12.单个MapReduce中多个GROUP BY
需要一组常用的GROUP BY键 hive.multigroupby.singlemr
13.虚拟列
14.使用ORC格式存储数据
15.分桶