范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Spark数据倾斜及其解决方案

  本文从数据倾斜的危害、现象、原因等方面,由浅入深阐述Spark数据倾斜及其解决方案。
  一、什么是数据倾斜
  对 Spark/Hadoop 这样的分布式大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜。
  对于分布式系统而言,理想情况下,随着系统规模(节点数量)的增加,应用整体耗时线性下降。如果一台机器处理一批大量数据需要120分钟,当机器数量增加到3台时,理想的耗时为120 / 3 = 40分钟。但是,想做到分布式情况下每台机器执行时间是单机时的1 / N,就必须保证每台机器的任务量相等。不幸的是,很多时候,任务的分配是不均匀的,甚至不均匀到大部分任务被分配到个别机器上,其它大部分机器所分配的任务量只占总得的小部分。比如一台机器负责处理 80% 的任务,另外两台机器各处理 10% 的任务。
  『不患多而患不均』,这是分布式环境下最大的问题。意味着计算能力不是线性扩展的,而是存在短板效应: 一个 Stage 所耗费的时间,是由最慢的那个 Task 决定。
  由于同一个 Stage 内的所有 task 执行相同的计算,在排除不同计算节点计算能力差异的前提下,不同 task 之间耗时的差异主要由该 task 所处理的数据量决定。所以,要想发挥分布式系统并行计算的优势,就必须解决数据倾斜问题。
  二、数据倾斜的危害
  当出现数据倾斜时,小量任务耗时远高于其它任务,从而使得整体耗时过大,未能充分发挥分布式系统的并行计算优势。
  另外,当发生数据倾斜时,部分任务处理的数据量过大,可能造成内存不足使得任务失败,并进而引进整个应用失败。
  三、数据倾斜的现象
  当发现如下现象时,十有八九是发生数据倾斜了:绝大多数 task 执行得都非常快,但个别 task 执行极慢,整体任务卡在某个阶段不能结束。原本能够正常执行的 Spark 作业,某天突然报出 OOM(内存溢出)异常,观察异常栈,是我们写的业务代码造成的。这种情况比较少见。TIPS
  在 Spark streaming 程序中,数据倾斜更容易出现,特别是在程序中包含一些类似 sql 的 join、group 这种操作的时候。因为 Spark Streaming 程序在运行的时候,我们一般不会分配特别多的内存,因此一旦在这个过程中出现一些数据倾斜,就十分容易造成 OOM。
  四、数据倾斜的原因
  在进行 shuffle 的时候,必须将各个节点上相同的 key 拉取到某个节点上的一个 task 来进行处理,比如按照 key 进行聚合或 join 等操作。此时如果某个 key 对应的数据量特别大的话,就会发生数据倾斜。比如大部分 key 对应10条数据,但是个别 key 却对应了100万条数据,那么大部分 task 可能就只会分配到10条数据,然后1秒钟就运行完了;但是个别 task 可能分配到了100万数据,要运行一两个小时。
  因此出现数据倾斜的时候,Spark 作业看起来会运行得非常缓慢,甚至可能因为某个 task 处理的数据量过大导致内存溢出。
  五、问题发现与定位
  1、通过 Spark Web UI
  通过 Spark Web UI 来查看当前运行的 stage 各个 task 分配的数据量(Shuffle Read Size/Records),从而进一步确定是不是 task 分配的数据不均匀导致了数据倾斜。
  知道数据倾斜发生在哪一个 stage 之后,接着我们就需要根据 stage 划分原理,推算出来发生倾斜的那个 stage 对应代码中的哪一部分,这部分代码中肯定会有一个 shuffle 类算子。可以通过 countByKey 查看各个 key 的分布。TIPS
  数据倾斜只会发生在 shuffle 过程中。这里给大家罗列一些常用的并且可能会触发 shuffle 操作的算子: distinct、groupByKey、reduceByKey、aggregateByKey、join、cogroup、repartition 等。出现数据倾斜时,可能就是你的代码中使用了这些算子中的某一个所导致的。
  2、通过 key 统计
  也可以通过抽样统计 key 的出现次数验证。
  由于数据量巨大,可以采用抽样的方式,对数据进行抽样,统计出现的次数,根据出现次数大小排序取出前几个:df.select("key").sample(false, 0.1)           // 数据采样     .(k => (k, 1)).reduceBykey(_ + _)         // 统计 key 出现的次数     .map(k => (k._2, k._1)).sortByKey(false)  // 根据 key 出现次数进行排序     .take(10)                                 // 取前 10 个。
  如果发现多数数据分布都较为平均,而个别数据比其他数据大上若干个数量级,则说明发生了数据倾斜。
  六、如何缓解数据倾斜
  基本思路 业务逻辑: 我们从业务逻辑的层面上来优化数据倾斜,比如要统计不同城市的订单情况,那么我们单独对这一线城市来做 count,最后和其它城市做整合。程序实现: 比如说在 Hive 中,经常遇到 count(distinct)操作,这样会导致最终只有一个 reduce,我们可以先 group 再在外面包一层 count,就可以了;在 Spark 中使用 reduceByKey 替代 groupByKey 等。参数调优: Hadoop 和 Spark 都自带了很多的参数和机制来调节数据倾斜,合理利用它们就能解决大部分问题。
  思路1. 过滤异常数据
  如果导致数据倾斜的 key 是异常数据,那么简单的过滤掉就可以了。
  首先要对 key 进行分析,判断是哪些 key 造成数据倾斜。具体方法上面已经介绍过了,这里不赘述。
  然后对这些 key 对应的记录进行分析:空值或者异常值之类的,大多是这个原因引起无效数据,大量重复的测试数据或是对结果影响不大的有效数据有效数据,业务导致的正常数据分布
  解决方案
  对于第 1,2 种情况,直接对数据进行过滤即可。
  第3种情况则需要特殊的处理,具体我们下面详细介绍。
  思路2. 提高 shuffle 并行度
  Spark 在做 Shuffle 时,默认使用 HashPartitioner(非 Hash Shuffle)对数据进行分区。如果并行度设置的不合适,可能造成大量不相同的 Key 对应的数据被分配到了同一个 Task 上,造成该 Task 所处理的数据远大于其它 Task,从而造成数据倾斜。
  如果调整 Shuffle 时的并行度,使得原本被分配到同一 Task 的不同 Key 发配到不同 Task 上处理,则可降低原 Task 所需处理的数据量,从而缓解数据倾斜问题造成的短板效应。
  (1)操作流程
  RDD 操作 可在需要 Shuffle 的操作算子上直接设置并行度或者使用 spark.default.parallelism 设置。如果是 Spark SQL,还可通过 SET spark.sql.shuffle.partitions=[num_tasks] 设置并行度。默认参数由不同的 Cluster Manager 控制。
  dataFrame 和 sparkSql 可以设置 spark.sql.shuffle.partitions=[num_tasks] 参数控制 shuffle 的并发度,默认为200。
  (2)适用场景
  大量不同的 Key 被分配到了相同的 Task 造成该 Task 数据量过大。
  (3)解决方案
  调整并行度。一般是增大并行度,但有时如减小并行度也可达到效果。
  (4)优势
  实现简单,只需要参数调优。可用最小的代价解决问题。一般如果出现数据倾斜,都可以通过这种方法先试验几次,如果问题未解决,再尝试其它方法。
  (5)劣势
  适用场景少,只是让每个 task 执行更少的不同的key。无法解决个别key特别大的情况造成的倾斜,如果某些 key 的大小非常大,即使一个 task 单独执行它,也会受到数据倾斜的困扰。并且该方法一般只能缓解数据倾斜,没有彻底消除问题。从实践经验来看,其效果一般。
  TIPS 可以把数据倾斜类比为 hash 冲突。提高并行度就类似于 提高 hash 表的大小。
  思路3. 自定义 Partitioner
  (1)原理
  使用自定义的 Partitioner(默认为 HashPartitioner),将原本被分配到同一个 Task 的不同 Key 分配到不同 Task。
  例如,我们在 groupByKey 算子上,使用自定义的 Partitioner:.groupByKey(new Partitioner() {   @Override   public int numPartitions() {     return 12;   }     @Override   public int getPartition(Object key) {     int id = Integer.parseInt(key.toString());     if(id >= 9500000 && id <= 9500084 && ((id - 9500000) % 12) == 0) {       return (id - 9500000) / 12;     } else {       return id % 12;     }   } })
  TIPS 这个做法相当于自定义 hash 表的 哈希函数。
  (2)适用场景
  大量不同的 Key 被分配到了相同的 Task 造成该 Task 数据量过大。
  (3)解决方案
  使用自定义的 Partitioner 实现类代替默认的 HashPartitioner,尽量将所有不同的 Key 均匀分配到不同的 Task 中。
  (4)优势
  不影响原有的并行度设计。如果改变并行度,后续 Stage 的并行度也会默认改变,可能会影响后续 Stage。
  (5)劣势
  适用场景有限,只能将不同 Key 分散开,对于同一 Key 对应数据集非常大的场景不适用。效果与调整并行度类似,只能缓解数据倾斜而不能完全消除数据倾斜。而且需要根据数据特点自定义专用的 Partitioner,不够灵活。
  思路4. Reduce 端 Join 转化为 Map 端 Join
  通过 Spark 的 Broadcast 机制,将 Reduce 端 Join 转化为 Map 端 Join,这意味着 Spark 现在不需要跨节点做 shuffle 而是直接通过本地文件进行 join,从而完全消除 Shuffle 带来的数据倾斜。
  from pyspark.sql.functions import broadcast result = broadcast(A).join(B, ["join_col"], "left")
  其中 A 是比较小的 dataframe 并且能够整个存放在 executor 内存中。
  (1)适用场景
  参与Join的一边数据集足够小,可被加载进 Driver 并通过 Broadcast 方法广播到各个 Executor 中。
  (2)解决方案
  在 Java/Scala 代码中将小数据集数据拉取到 Driver,然后通过 Broadcast 方案将小数据集的数据广播到各 Executor。或者在使用 SQL 前,将 Broadcast 的阈值调整得足够大,从而使 Broadcast 生效。进而将 Reduce Join 替换为 Map Join。
  (3)优势
  避免了 Shuffle,彻底消除了数据倾斜产生的条件,可极大提升性能。
  (4)劣势
  因为是先将小数据通过 Broadcase 发送到每个 executor 上,所以需要参与 Join 的一方数据集足够小,并且主要适用于 Join 的场景,不适合聚合的场景,适用条件有限。NOTES
  使用Spark SQL时需要通过 SET spark.sql.autoBroadcastJoinThreshold=104857600 将 Broadcast 的阈值设置得足够大,才会生效。
  思路5. 拆分 join 再 union
  思路很简单,就是将一个 join 拆分成 倾斜数据集 Join 和 非倾斜数据集 Join,最后进行 union:对包含少数几个数据量过大的 key 的那个 RDD (假设是 leftRDD),通过 sample 算子采样出一份样本来,然后统计一下每个 key 的数量,计算出来数据量最大的是哪几个 key。具体方法上面已经介绍过了,这里不赘述。然后将这 k 个 key 对应的数据从 leftRDD 中单独过滤出来,并给每个 key 都打上 1~n 以内的随机数作为前缀,形成一个单独的 leftSkewRDD;而不会导致倾斜的大部分 key 形成另外一个 leftUnSkewRDD。接着将需要 join 的另一个 rightRDD,也过滤出来那几个倾斜 key 并通过 flatMap 操作将该数据集中每条数据均转换为 n 条数据(这 n 条数据都按顺序附加一个 0~n 的前缀),形成单独的 rightSkewRDD;不会导致倾斜的大部分 key 也形成另外一个 rightUnSkewRDD。现在将 leftSkewRDD 与 膨胀 n 倍的 rightSkewRDD 进行 join,且在 Join 过程中将随机前缀去掉,得到倾斜数据集的 Join 结果 skewedJoinRDD。注意到此时我们已经成功将原先相同的 key 打散成 n 份,分散到多个 task 中去进行 join 了。对 leftUnSkewRDD 与 rightUnRDD 进行Join,得到 Join 结果 unskewedJoinRDD。通过 union 算子将 skewedJoinRDD 与 unskewedJoinRDD 进行合并,从而得到完整的 Join 结果集。TIPS
  rightRDD 与倾斜 Key 对应的部分数据,需要与随机前缀集 (1~n) 作笛卡尔乘积 (即将数据量扩大 n 倍),从而保证无论数据倾斜侧倾斜 Key 如何加前缀,都能与之正常 Join。skewRDD 的 join 并行度可以设置为 n * k (k 为 topSkewkey 的个数)。由于倾斜Key与非倾斜Key的操作完全独立,可并行进行。
  (1)适用场景
  两张表都比较大,无法使用 Map 端 Join。其中一个 RDD 有少数几个 Key 的数据量过大,另外一个 RDD 的 Key 分布较为均匀。
  (2)解决方案
  将有数据倾斜的 RDD 中倾斜 Key 对应的数据集单独抽取出来加上随机前缀,另外一个 RDD 每条数据分别与随机前缀结合形成新的RDD(相当于将其数据增到到原来的N倍,N即为随机前缀的总个数),然后将二者Join并去掉前缀。然后将不包含倾斜Key的剩余数据进行Join。最后将两次Join的结果集通过union合并,即可得到全部Join结果。
  (3)优势
  相对于 Map 则 Join,更能适应大数据集的 Join。如果资源充足,倾斜部分数据集与非倾斜部分数据集可并行进行,效率提升明显。且只针对倾斜部分的数据做数据扩展,增加的资源消耗有限。
  (4)劣势
  如果倾斜 Key 非常多,则另一侧数据膨胀非常大,此方案不适用。而且此时对倾斜 Key 与非倾斜 Key 分开处理,需要扫描数据集两遍,增加了开销。
  思路6. 大表 key 加盐,小表扩大 N 倍 jion
  如果出现数据倾斜的 Key 比较多,上一种方法将这些大量的倾斜 Key 分拆出来,意义不大。此时更适合直接对存在数据倾斜的数据集全部加上随机前缀,然后对另外一个不存在严重数据倾斜的数据集整体与随机前缀集作笛卡尔乘积(即将数据量扩大N倍)。
  其实就是上一个方法的特例或者简化。少了拆分,也就没有 union。
  (1)适用场景
  一个数据集存在的倾斜 Key 比较多,另外一个数据集数据分布比较均匀。
  (2)优势
  对大部分场景都适用,效果不错。
  (3)劣势
  需要将一个数据集整体扩大 N 倍,会增加资源消耗。
  思路7. map 端先局部聚合
  在 map 端加个 combiner 函数进行局部聚合。加上 combiner 相当于提前进行 reduce ,就会把一个 mapper 中的相同 key 进行聚合,减少 shuffle 过程中数据量 以及 reduce 端的计算量。这种方法可以有效的缓解数据倾斜问题,但是如果导致数据倾斜的 key 大量分布在不同的 mapper 的时候,这种方法就不是很有效了。
  TIPS 使用 reduceByKey 而不是 groupByKey。
  思路8. 加盐局部聚合 + 去盐全局聚合
  这个方案的核心实现思路就是进行两阶段聚合。第一次是局部聚合,先给每个 key 都打上一个 1~n 的随机数,比如 3 以内的随机数,此时原先一样的 key 就变成不一样的了,比如 (hello, 1) (hello, 1) (hello, 1) (hello, 1) (hello, 1),就会变成 (1_hello, 1) (3_hello, 1) (2_hello, 1) (1_hello, 1) (2_hello, 1)。接着对打上随机数后的数据,执行 reduceByKey 等聚合操作,进行局部聚合,那么局部聚合结果,就会变成了 (1_hello, 2) (2_hello, 2) (3_hello, 1)。然后将各个 key 的前缀给去掉,就会变成 (hello, 2) (hello, 2) (hello, 1),再次进行全局聚合操作,就可以得到最终结果了,比如 (hello, 5)。def antiSkew(): RDD[(String, Int)] = {     val SPLIT = "-"     val prefix = new Random().nextInt(10)     pairs.map(t => ( prefix + SPLIT + t._1, 1))         .reduceByKey((v1, v2) => v1 + v2)         .map(t => (t._1.split(SPLIT)(1), t2._2))         .reduceByKey((v1, v2) => v1 + v2) }
  不过进行两次 mapreduce,性能稍微比一次的差些。
  七、Hadoop 中的数据倾斜
  Hadoop 中直接贴近用户使用的是 Mapreduce 程序和 Hive 程序,虽说 Hive 最后也是用 MR 来执行(至少目前 Hive 内存计算并不普及),但是毕竟写的内容逻辑区别很大,一个是程序,一个是Sql,因此这里稍作区分。
  Hadoop 中的数据倾斜主要表现在 ruduce 阶段卡在99.99%,一直99.99%不能结束。
  这里如果详细的看日志或者和监控界面的话会发现:有一个多几个 reduce 卡住各种 container报错 OOM读写的数据量极大,至少远远超过其它正常的 reduce伴随着数据倾斜,会出现任务被 kill 等各种诡异的表现。
  经验: Hive的数据倾斜,一般都发生在 Sql 中 Group 和 On 上,而且和数据逻辑绑定比较深。
  优化方法
  这里列出来一些方法和思路,具体的参数和用法在官网看就行了。map join 方式count distinct 的操作,先转成 group,再 count参数调优set hive.map.aggr=trueset hive.groupby.skewindata=trueleft semi jion 的使用设置 map 端输出、中间结果压缩。(不完全是解决数据倾斜的问题,但是减少了 IO 读写和网络传输,能提高很多效率)
  说明hive.map.aggr=true: 在map中会做部分聚集操作,效率更高但需要更多的内存。
  hive.groupby.skewindata=true: 数据倾斜时负载均衡,当选项设定为true,生成的查询计划会有两个MRJob。第一个MRJob 中,Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的GroupBy Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MRJob再根据预处理的数据结果按照GroupBy Key分布到Reduce中(这个过程可以保证相同的GroupBy Key被分布到同一个Reduce中),最后完成最终的聚合操作。
  八、参考文章 Spark性能优化之道——解决Spark数据倾斜(Data Skew)的N种姿势 漫谈千亿级数据优化实践:数据倾斜(纯干货) 解决spark中遇到的数据倾斜问题

为什么CCD相机突然火了?能不能买?这两个月,不止一个粉丝,让村长推荐几款CCD相机。我就纳闷了,这些老古董,电子垃圾,不是应该在柜子的角落,怎么又被人提及,而且价格还炒上来了?然后我去闲鱼看了一下,个别老型号要好几男子带老婆旅行,200公里的路程开5个多小时你能少去2趟厕所吗暑假是出门旅游的高峰期,很多家庭选择在这个时候来一场自驾游,一来是行程方便,二来可以自行安排旅游时间,比跟团游自由许多。当然自驾游也有一定的缺点,尤其对于开车的司机来说,爬山涉水的24工作室藏龙卧虎?Dota2CROW冠军组永劫战队,要暴揍idol?近日,24工作室旗下的游戏永劫无间官宣了第二届永劫无间全明星周末的消息,网友们发现这第二届的含金量那可是真不低。本次参赛名单中有Mike清歌这样的永劫大神,有PDD大司马这样的游戏喝茶和喝白开水哪种更健康?喝茶喝白开水有区别吗,哪种更健康?我们都知道应该多喝水,对于我们的身体健康有好处,但是很多人都觉得白开水的味道寡淡,所以就喜欢在水里加一些东西泡着喝,比如很多人就非常喜欢喝茶水。中你还在为你家小孩子打扰你工作烦恼么?以前我家小孩老是在我跟领导开会或者专注做事情的时候跑过来打扰我,有种让人特别讨厌,让人急躁感觉,越烦躁越做不好自己的事情你是不是试过各种方法,比如爸爸开完会后好好陪你玩,给你买玩具标题生活类评测东菱布艺清洗机使用体验拥有11项专利填补布艺清洗市场空白,东菱布艺清洗机使用体验说到布艺清洗,相信大家在脑海中会浮现出很多形容词,麻烦耗时洗不干净。尤其面对大件物品的清洗更是头疼不已,例如布艺沙发地毯床美国人会在旅行时做什么粗鲁的事?在旅行越来越方便的今天,相信大家或多或少也在大街上见过外国人的面孔,但是否遇到过外国人旅行时的不礼貌行为呢?今天小锦在美版知乎Quora上看到了这个问题,忍不住分享给大家看看。接下油价调整消息今天8月15号,全国加油站929598汽油新限价今天是2022年8月15日,距离本轮国内成品油价格调整窗口开启还剩下一个星期的时间了,按照目前的数据显示,油价仍旧处于预计下调的阶段,我们很有可能会迎来油价五连跌,那么汽柴油价格将约书亚VS乌西克下周争夺拳台杂志金腰带,胜出者均将创造历史本周,WBC重量级拳王泰森富里正式宣布退役,同时放弃了他的拳台杂志金腰带。如今,拳台杂志已经做出决定,下周上演的安东尼约书亚VS奥雷科桑德乌西克二番战,将争夺空缺的拳台杂志金腰带。月薪集中在8k17k厌倦大小周近三成的人没有跳槽过,中国开发者调查报告发布附中奖名单作者屠敏出品CSDN(IDCSDNnews)学不完的技术,跟不动的技术潮流,过去一年,随着数字化智能化趋势的来临,无论是传统的工具开发者的习惯,还是进入快速路的自动驾驶国产操作系统中国继续减持,如果将美债全部抛售,会产生什么后果?作为世界第一大经济体,美国的发展,受到了很多人的关注。而近年来,大量只有美债的国家也选择纷纷将手里的美债抛售出去,以我国为例,从去年年底开始,就在进行美债的抛售处理,如今,手里持有近20年来,这8部描写特种兵的电视剧极具代表性,最高评分9。5分很多老百姓在谈及我们敬爱的解放军时,大部分还停留在陆海空三军,其实随着科技的不断进步和咱们强军战略的不断发展,我可以无比自豪的告诉大家,中国人民解放军已经有了五大军种。分别是陆军海今世缘等着我明晚播出独自闯荡北京,谢谢你让我撑起了一个家播出公告为缘寻找为爱坚守8月14日(明天)2234CCTV1将播出等着我扫描上方二维码手机也能看直播2005年,15岁的李秋雨,和很多人一样,怀揣着梦想来到北京,他要为自己的幸福生晚年独居养老院的4位演员子女不孝自捐财产,过得不如普通人关于晚年,网上有一句高赞回答有什么也不如有个好伴侣,没什么也不能没个好晚年。晚年优雅书中同样有句话说你可以不是天才,但应具有年轻的精神。老去,是人生的必经过程,有人刚到中年就开始感杨幂究竟会不会功夫?且看电影大武当作者李达源杨幂究竟会不会功夫?且看电影大武当,我们就知道杨幂究竟会不会功夫了。而大武当里的杨幂是什么功夫路数呢?其实里面包含了很多武术的路数,甚至深得传武武术功夫的精髓,杨幂功夫里西装暴徒非凡哥究竟战斗力如何?且来看明日之后的新电影提到西装暴徒这四个字,大家一定会想到张晋。但下边要说的这位演员可不是他,而是TVB老戏骨麦长青,如果你看到这个名字还想不清他是谁,那我们不妨直接看图识人。很多人看到过麦长青的梁非凡韩国电影分手的决心纯爱悬疑,烧脑震撼今年的戛纳电影节,韩国导演朴赞郁暌违六年推出的由汤唯领衔主演的新片分手的决心大放异彩。电影不仅以3。2分(满分4分)获得戛纳场刊的最高分,在最终奖项的归属中,朴赞郁也凭此片获得最佳手机轻巧方便,为何西方发达国家还流行固定电话?文莜衍数据显示,2022年上半年我国市场手机总出货量1。36亿部,较2021年同期减少3800万部,创2013年以来上半年新低。其中,5G手机出货量为1。09亿部,较2021年同期RedmiK50至尊版评测全方位进化,不负至尊之名前言K50宇宙的真旗舰,终于来了自2019年初Redmi品牌独立后,K系列就一直在其产品线中扮演着至关重要的角色。2019年,RedmiK20Pro横空出世,作为当时整个小米系首款背靠三巨头阿维塔11抢占高端智能电动车赛道经济观察网记者濮振宇高端智能纯电赛道的玩家又添一员。8月8日晚,阿维塔品牌宣布,阿维塔11以及联名限量版车型阿维塔011正式上市。阿维塔11共3个配置,价格区间在34。99万40。比刀片电池更安全?比亚迪公布六棱柱全新电池专利在电动汽车快速发展的时代,其最主要的核心部件之一的动力电池技术也在不断取得新突破,电池企业之间的竞争越来越激烈,特斯拉比亚迪宁德时代松下,未来谁才是动力电池产业全球化的最大赢家?近混合动力也禁售?在中国受委屈就算了,丰田这次不惯着英国中国作为全球新能源汽车发展最为迅速的汽车市场之一,也与各主流汽车消费国家与地区一样,对于新能源汽车有着各种政策鼓励。但这些鼓励性的政策似乎更多集中在纯电动插混增程等车型上。混合动力
双十一坦克世界又送巨额福利啦自第一次世界大战之中英国首次研制出坦克这种重型武器以后,不甘落后的法国人也推出了自己的第一款坦克雷诺FT17,这款坦克可是说是现代坦克的鼻祖。拥有可以旋转的炮塔,武器是一门37毫米csgo为什么连CFHD都不如呢?完美世界怪我咯一直以来,穿越火线HD在外都给人一种不温不火的感觉,尤其是在和自己的哥哥CF来比时,那游戏的火热程度更是甩了人家几条街,更别提它的二哥CF手游了,那热度更是别提了,用惨不忍睹来形容LOL0击败RW2021NEST全国电子竞技大赛英雄联盟项目淘汰赛首轮,一队主力尽出的WE战队迎战RW,双方带来了BO3的对决。WE连续两局比赛在前中期都陷入了劣势,但都凭着他们出色的个人实力和抓糖豆人第六赛季具体内容将于11月23日直播公布今日糖豆人终极淘汰赛官方发推表示,将于11月23日格林尼治标准时间下午5点直播关于游戏第六赛季的具体内容。推文表示第六赛季的名字为PARTYSPECTACULAR(壮观的派对),届德罗赞解除束缚一身轻!重现巅峰助推公牛崛起体坛周报全媒体记者罗珂他可能是最被低估的NBA球星之一。这种评价再一次落在德罗赞身上,不过当他接连出现在NBA官方MVP排行榜,你还准备继续忽视他吗?在马刺经历了低迷期后,德罗赞在樊振东随国乒抵达休斯敦北京时间11月17日傍晚,中国乒乓球队顺利飞抵美国休斯敦,樊振东陈梦等主力在教练组的带领下入住酒店。直接从欧洲转战美国的国乒小分队在较早前抵达,包括林高远周启豪等男乒主力率先开展训王者荣耀貂蝉惨遭削弱,百万玩家威胁卸游,天美策划踢到铁板了王者荣耀超话导语万水千山总是情,各位小伙伴在右上角点点关注行不行。说起王者荣耀这款手游,那真是家喻户晓,说它是国民手游一点也不过分。众所周知,王者荣耀中共有107位英雄,每个英雄都玩家130小时自制利维坦之斧得到战神4总监认可利维坦之斧是战神(2018)中奎托斯的新武器,由矮人兄弟联手打造。近日有玩家花费了130个小时打造了一把逼真的利维坦之斧,甚至得到了战神(2018)总监的认可。这位玩家在推特上叫做仙剑7苏媚的彩蛋时隔二十年,她的下落仍然牵动着无数玩家的心自仙剑奇侠传七问世以来,出现了众多与二代游戏有关的彩蛋。诸如王小虎沈欺霜李忆如,天师门虎煞御灵等二代内容,要么直接登场,要么被间接提起,这也使得仙剑二被开除仙籍的传言不攻自破。当然迫不及待上线经典旧世赛季服魔兽世界开启的无限套娃模式,靠吃老本还能坚持多久?媒体微观网游魔兽世界推出经典怀旧服仅2年时间,怀旧服中的怀旧服又迫不及待地上线了。11月17日,魔兽世界怀旧服正式上新经典旧世赛季服。在该赛季服中,所有玩家将重回1级,并在限定时间三国迎来拉尼娜现象?荣耀新三国公测版本今日正式开启当三国首次迎来拉尼娜现象,曾经被视为金科玉律的策略还将奏效吗?今日,正统三国社交对抗策略手游荣耀新三国公测版本正式开启!S2山河易势赛季将同步震撼开赛!在全新赛季中,天气系统坐骑系