SparkConf
不会读取传递给spark-submit
的配置参数。
我的python代码类似于
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName("foo")
sc = SparkContext(conf=conf)
# processing code...
sc.stop()
我用
提交PYSPARK_PYTHON="/opt/anaconda/bin/python" spark-submit foo.py \
--master local[4] --conf="spark.driver.memory=16g" --executor-memory 16g
但没有应用任何配置参数。也就是说,应用程序使用默认值local [*]表示master,1g表示驱动程序内存,1g表示执行程序内存。这一点得到了Spark GUI的证实。
但是,如果我使用pyspark提交应用程序,则会遵循配置参数:
PYSPARK_PYTHON="/opt/anaconda/bin/python" pyspark --master local[4] \
--conf="spark.driver.memory=8g"
请注意,--executor-memory 16g
也已更改为--conf="spark.executor.memory=16g"
,因为前者也无效。
我做错了什么?
答案 0 :(得分:3)
我认为您需要从=
移除--conf=
符号。您的spark-submit
脚本应为
PYSPARK_PYTHON="/opt/anaconda/bin/python" spark-submit foo.py \
--master local[4] --conf spark.driver.memory=16g --executor-memory 16g
请注意,spark-submit还支持使用标记--driver-memory 16G
答案 1 :(得分:2)
显然,论证的顺序很重要。最后一个参数应该是python脚本的名称。所以,电话应该是
class Bar
{
public function test() {
$this->testPrivate();
$this->testPublic();
}
public function testPublic() {
echo "Bar::testPublic\n";
}
private function testPrivate() {
echo "Bar::testPrivate\n";
}
}
class Foo extends Bar
{
public function testPublic() {
echo "Foo::testPublic\n";
}
private function testPrivate() {
echo "Foo::testPrivate\n";
}
}
$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
// Foo::testPublic
?>
或者,关注@ glennie-helles-sindholt的建议,
PYSPARK_PYTHON="/opt/anaconda/bin/python" spark-submit \
--master local[4] --conf="spark.driver.memory=16g" --executor-memory 16g foo.py