Apache spark 需要500 MB内存才能读取spark中的小文件

Apache spark 需要500 MB内存才能读取spark中的小文件,apache-spark,pyspark,Apache Spark,Pyspark,我正试图读取spark中的一个小文件来运行一些测试。文件大小为4KB。pyspark作业如下所示: from pyspark import SparkContext, SQLContext spark_context = SparkContext(appName='cache_test') sql_context = SQLContext(spark_context) spark_context.setLogLevel('WARN') df = (sql_context.read

我正试图读取spark中的一个小文件来运行一些测试。文件大小为4KB。pyspark作业如下所示:

from pyspark import SparkContext, SQLContext

spark_context = SparkContext(appName='cache_test')
sql_context = SQLContext(spark_context)

spark_context.setLogLevel('WARN')

df = (sql_context.read
      .format('com.databricks.spark.csv')
      .load('simple_data.csv')
     )

spark_context.stop()
我正在运行与内存占用相关的测试,因此我想配置executor节点将使用的内存量

spark-submit  --master spark://$(hostname):7077 \
    --total-executor-cores 1  \
    --conf spark.eventLog.enabled=true \
    --conf spark.executor.memory=400m \
    --packages com.databricks:spark-csv_2.11:1.3.0  \
    caching_test.py
如果我分配的资源少于500 MB/节点,作业将陷入循环,表示它没有足够的资源

16/04/28 16:22:20 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
这在我的笔记本电脑和我工作时使用的台式机上都可以重复。这是spark的已知特征吗?是否存在可能导致此行为的服务器配置

提前谢谢你

经过几次测试后,看起来我可以获得470MB的分配内存。对我来说奇怪的是,当我指定470MB/节点时,我查看应用程序UI,发现分配的总内存为511.1MB(主)+112.9MB(工作者)=624MB。为什么我指定的内存与我实际得到的内存之间存在差异