作为思索的人而行动,
作为行动的人而思索


这里只有我的呓语 ... ...



统计信息在 join 时特别重要1。相关参数:

  • spark.sql.autoBroadcastJoinThreshold : 是否使用 BHJ ,默认10MB。
  • spark.sql.cbo.joinRecorder.enabled: 优化多表 join ,默认 false 。

查看统计信息

如何查看 Spark SQL 的统计信息?首先,CBO 必须打开:


spark.conf.set("spark.sql.cbo.enabled", true)

执行:


spark.sql("""ANALYZE TABLE table_name
             COMPUTE STATISTICS""").show(n=50)

spark.sql("""ANALYZE …



什么是数据倾斜

简单地说,数据倾斜就是分区的数据不均衡地分布。很多数据天然就是易“倾斜”的,比如国家的人口、互联网上网站的访问量等等。

Spark 中的 skew join

在 Spark 中,像 SortMergeJoin/ShuffleHashJoin 这样要求输入数据分区的,容易受数据倾斜的影响;像 BroadcastHashJoin 就比较不容易受数据倾斜的影响,因为它不要求输入数据分区,但它要求 join 的其中一方数据集要足够小。skew join 可以认为是混合使用这两类 join 的的策略。

skew join 是“缓解”了数据倾斜的影响,并不是彻底“解决”了数据倾斜的特征。目前 Spark 实现 skew join 的主要策略有:skew hint, runtime skew …




在 Scala 中使用 Thrift RPC 的示例。




在 Scala 中使用 Avro RPC 的示例。




在 Scala 中使用 gRPC 的示例。




非原创内容,仅供自己参考。




BigDL 与 Analytics Zoo 简介

BigDL 是一个在 Apache Spark 上构建深度学习、数值计算及神经网络应用的库,它支持导入预先通过 Caffe、 Torch 或 Keras 训练的模型到 Spark 中。




Spark 的流数据处理

Spark 处理流数据的模型就是用(微)批模拟流。

Spark Streaming 是 Spark 上的流处理库,抽象出基于 RDD 的 Dstream 。

Spark Structured Streaming1 从 Spark 2.0 开始引入,它是基于 SparkSQL 的流处理引擎,抽象出基于 Dataset/DataFrame 的 Stream DataFrame 。它与 Spark Streaming 最大的区别就是它用几乎同一套 Dataset …



知识共享许可协议 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行许可,欢迎转载、演绎,
但是必须保留本文的署名 Charles(包含链接),且不得用于商业目的。