为什么使用SparkyR'将RDD持久化到磁盘;s spark_read_csv?
我有一个带有两个工作进程的Spark群集—所有节点都有16GB的RAM。 我使用Sparkyr Spark_read_csv(下面的代码)读取S3中的数据,并使用MEMORY=TRUE参数,但尽管有足够的内存,大多数数据都会溢出到磁盘。RStudio服务器安装在与Spark master相同的节点上。你知道为什么会发生这种情况,以及这是否是最优的吗?我怎么能调整它?谢谢为什么使用SparkyR'将RDD持久化到磁盘;s spark_read_csv?,r,apache-spark,apache-spark-sql,sparklyr,R,Apache Spark,Apache Spark Sql,Sparklyr,我有一个带有两个工作进程的Spark群集—所有节点都有16GB的RAM。 我使用Sparkyr Spark_read_csv(下面的代码)读取S3中的数据,并使用MEMORY=TRUE参数,但尽管有足够的内存,大多数数据都会溢出到磁盘。RStudio服务器安装在与Spark master相同的节点上。你知道为什么会发生这种情况,以及这是否是最优的吗?我怎么能调整它?谢谢 flightsFull <- spark_read_csv(sc, "flights_spark",
flightsFull <- spark_read_csv(sc, "flights_spark",
path = "/s3fs/mypath/multipleFiles",
header = TRUE,
memory = TRUE,
columns = list(
Year = "character",
Month = "character",
DayofMonth = "character",
DayOfWeek = "character",
DepTime = "character",
CRSDepTime = "character",
ArrTime = "character",
CRSArrTime = "character",
UniqueCarrier = "character",
FlightNum = "character",
TailNum = "character",
ActualElapsedTime = "character",
CRSElapsedTime = "character",
AirTime = "character",
ArrDelay = "character",
DepDelay = "character",
Origin = "character",
Dest = "character",
Distance = "character",
TaxiIn = "character",
TaxiOut = "character",
Cancelled = "character",
CancellationCode = "character",
Diverted = "character",
CarrierDelay = "character",
WeatherDelay = "character",
NASDelay = "character",
SecurityDelay = "character",
LateAircraftDelay = "character"),
infer_schema = FALSE)
spark env.sh
SPARK_MASTER_HOST=ip-host.eu-west-1.compute.internal
SPARK_WORKER_CORES=8
SPARK_WORKER_MEMORY=32768m
Edit2-添加执行者窗格
我的理解是,您使用默认的内存选项来提交spark应用程序,尽管有足够的内存可供使用,但不使用
384.1
是您使用的默认存储内存,因此Spark开始将块持久化到磁盘
我的理解是,您有一个Spark独立集群,其中包含独立主集群和一个独立工作集群。这就是
spark env.sh
所建议的(未指定工作人员数量),这就是我在屏幕截图中看到的spark executors数量,因为spark Standalone提供的spark executors数量与独立工作人员数量相同
我的猜测是增加驱动程序和执行程序的内存属性,然后重新开始。这将增加内存空间,减少磁盘使用
我还注意到,所讨论的RDD的存储级别是磁盘序列化1x,因此Sparkyr可以决定自行设置存储级别(给定内存限制)。它通常由Spark开发人员指定,但是
Spark\u read\u csv
可能会以某种方式决定它本身。我无法重现错误,您可以添加Spark配置文件吗?spark-default.conf和spark-env.sh是否也可以连接环境?你如何spark提交应用程序?sparkyr
正在调用CACHE TABLE
,因此很可能是一个环境/默认问题。如果你真的检查了文档,它会更有用,但为了更简单,这里涉及了CACHE TABLE
(spark\u read\u csv
->)不要问我为什么决定使用它:)谢谢你的提示spark\u read\u csv
确实有一个名为options
的参数,但是doc没有告诉您哪些参数可以传递到那里。也可以在spark\u connect
config参数中修改连接本身。我会看看这个,然后做个实验。
SPARK_MASTER_HOST=ip-host.eu-west-1.compute.internal
SPARK_WORKER_CORES=8
SPARK_WORKER_MEMORY=32768m