我已经将Spark配置为在hive表上进行查询。
使用以下命令运行 Thrift JDBC/ODBC 服务器:
cd $SPARK_HOME
./sbin/start-thriftserver.sh --master spark://myhost:7077 --hiveconf hive.server2.thrift.bind.host=myhost --hiveconf hive.server2.thrift.port=9999
然后在Spark worker UI检查,执行器启动失败并出现以下错误,JVM初始化失败,因为错误的-Xms:
Invalid initial heap size: -Xms0M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
以下是 conf/spark-env.sh 中更改的配置
export SPARK_JAVA_OPTS="-Dspark.executor.memory=512M"
export SPARK_EXECUTOR_MEMORY=1G
export SPARK_DRIVER_MEMORY=512M
export SPARK_WORKER_MEMORY=2G
export SPARK_WORKER_INSTANCES=1
我真的不知道这个值 -Xms0M 是从哪里来的或它是如何得出的?请帮助我了解问题并更改此值。
它现在可以工作了...
Thrift 服务器没有从 spark-env.sh 中挑选执行器内存,然后我显式添加了 thrift 服务器启动脚本。
./sbin/start-thriftserver.sh
exec "$FWDIR"/sbin/spark-daemon.sh spark-submit $CLASS 1 --executor-memory 512M "$@"
这样,执行器开始获得有效内存,JDBC查询得到结果。
conf/spark-env.sh(Thrift-Server未选择执行器内存配置)
export SPARK_JAVA_OPTS="-Dspark.executor.memory=512M"
export SPARK_EXECUTOR_MEMORY=512M