为啥 spark 无法使用 getOrCreate 从检查点恢复

Posted

技术标签:

【中文标题】为啥 spark 无法使用 getOrCreate 从检查点恢复【英文标题】:why spark can not recovery from checkpoint by using getOrCreate为什么 spark 无法使用 getOrCreate 从检查点恢复 【发布时间】:2016-10-17 07:14:52 【问题描述】:

按照官方文档,我正在尝试恢复 StreamingContext:

def get_or_create_ssc():
    cfg = SparkConf().setAppName('MyApp').setMaster('local[10]')
    sc = SparkContext(conf=cfg)
    ssc = StreamingContext(sparkContext=sc, batchDuration=2)

    lines = ssc.socketTextStream('localhost', 9999).checkpoint(10)

    def update_func(x, y):
        return sum(x) + (y or 0)

    word = lines.flatMap(lambda x: x.split()).map(lambda x: (x, 1)).updateStateByKey(update_func)
    word.pprint()
    return ssc


ssc = StreamingContext.getOrCreate('checkpoint', get_or_create_ssc)

ssc.start()
ssc.awaitTermination()

当我第一次启动代码时(检查点为空),它也能正常工作

为了模拟系统故障,我关闭了终端

但再次启动时无法恢复

终端只显示这个

16/10/17 15:04:53 WARN Utils: Your hostname, localhost resolves to a loopback address: 127.0.0.1; using 192.168.177.1 instead (on interface eth0)
16/10/17 15:04:53 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
16/10/17 15:04:55 WARN SparkContext: Use an existing SparkContext, some configuration may not take effect.
16/10/17 15:04:57 WARN SocketInputDStream: isTimeValid called with 1476686252000 ms whereas the last valid time is 1476686572000 ms
[Stage 3:>                                                         (0 + 0) / 20]

而且后面也没有新信息了

【问题讨论】:

【参考方案1】:

最后,我从 Spark UI 的环境页面找到了原因。

当我第一次启动代码时,spark.master 已设置为 'local[10]'。

但是从检查点恢复后,spark.master 会自动更改为 'local[*]'

由于我的 VMware 只有一个内核,我必须使用“park.master local[10]”编辑 conf/spark-defaults.conf。

在官方文档中有一条评论说:

Metadata includes:
    Configuration - The configuration that was used to create the streaming application.

Configuration 好像没有包含 spark.master。

为什么?

【讨论】:

以上是关于为啥 spark 无法使用 getOrCreate 从检查点恢复的主要内容,如果未能解决你的问题,请参考以下文章

Spark 2.0:通过 GetOrCreate 重新定义 SparkSession 参数,但在 WebUI 中看不到变化

Spark SQL 无法输出数据帧

为啥 spark 无法识别我的“数据框布尔表达式”?

Spark(pyspark)速度测试

使用 spark 读取 csv.file 时如何省略标头?

spark 表关联