需要500 MB内存来读取spark

时间:2016-04-28 21:30:58

标签: apache-spark pyspark

我试图在一个小文件中读取火花来运行一些测试。该文件大小为4 kB。 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()

我正在运行与内存占用相关的测试,因此我想配置执行程序节点将使用的内存量。

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

这在我的笔记本电脑和我在工作中使用的台式机上都是可重复的。这是火花的已知特征吗?是否存在可能导致此行为的服务器配置?

提前谢谢!

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

0 个答案:

没有答案