为了编写独立脚本,我想直接从Python开始并配置Spark上下文.使用PySpark的脚本我可以设置驱动程序的内存大小:
$ /opt/spark-1.6.1/bin/pyspark
... INFO MemoryStore: MemoryStore started with capacity 511.5 MB ...
$ /opt/spark-1.6.1/bin/pyspark --conf spark.driver.memory=10g
... INFO MemoryStore: MemoryStore started with capacity 7.0 GB ...
Run Code Online (Sandbox Code Playgroud)
但是当从Python模块启动上下文时,无法设置驱动程序的内存大小:
$ export SPARK_HOME=/opt/spark-1.6.1
$ export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python
$ python
>>> from pyspark import SparkConf, SparkContext
>>> sc = SparkContext(conf=SparkConf().set('spark.driver.memory', '10g'))
... INFO MemoryStore: MemoryStore started with capacity 511.5 MB ...
Run Code Online (Sandbox Code Playgroud)
我所知道的唯一的解决办法是设置spark.driver.memory在sparks-default.conf,这是不令人满意的.正如在解释这个职位,这是有道理的Java /斯卡拉不能够能够一旦JVM开始更改驱动程序的内存大小.在导入pyspark模块之前或导入模块时,有没有办法以某种方式从Python动态配置它?
我正在vim上实现一个语法文件来突出显示这样的层次结构
| text at level 1
| | text at level 2
| | text at level 2
| | | text at level 3
| text at level 1
Run Code Online (Sandbox Code Playgroud)
比如我用
syn match myMatch +^\(| \)\++
Run Code Online (Sandbox Code Playgroud)
突出水平指标.但是,我还要强调这些错误的模式
| text at level 1
| | | text at level 3
Run Code Online (Sandbox Code Playgroud)
这会使水平增加一个以上.我写了以下语法匹配
syn match myWrongMatch +^\(\(| \)*\)\(\n\|[^|].*\n\)\1\(| \)\{2,}+
Run Code Online (Sandbox Code Playgroud)
它可能不是最佳的,但它可以完成工作.问题是匹配是由正在编辑的行上的vim检查的,这样如果我通过删除第二行上的级别来修复错误,它将停止突出显示第二行,但仍然突出显示第一行,直到我也编辑它(比如删除并重写一个字符).
这个问题是我只能使用下一行信息匹配一行,而不是相反.由于这与正则表达式匹配似乎不可能,我想知道是否有可能要求vim检查当前编辑的行和前一行(或更广泛的上下文)中的匹配?另一个解决方案可能是通过检查上下文的区域来实现它,但到目前为止我还没有成功.
编辑:答案实际上在vim帮助:syn-sync-linebreaks(感谢Herbert Sitz指出我正确的部分).
使用匹配多行的模式时,一行中的更改可能导致模式在前一行中不再匹配.这意味着必须从更改的位置开始.可以使用"linebreaks"参数指定多少行.例如,当一个模式可能包含一个换行符时,请使用:
:syntax sync linebreaks=1
Run Code Online (Sandbox Code Playgroud)
结果是,在进行更改之前,重绘始终至少从一行开始."linebreaks"的默认值为零.通常,"minlines"的值大于"linebreaks".
这非常有效.