我试图在一个小文件中读取火花来运行一些测试。该文件大小为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。为什么我指定的内存和实际得到的内容之间存在差异?