Apache spark 使用Spark从CSV文件流式传输
我正在尝试使用Spark Streaming从NFS上的CSV文件收集数据。 我的代码非常简单,到目前为止,我只在spark shell中运行它,但即使在那里,我也遇到了一些问题 我使用一个独立的spark master和6个Worker运行spark shell,并将以下参数传递给spark shell: --主人spark://master.host:7077 --num executors 3——conf spark.cores.max=10 代码如下:Apache spark 使用Spark从CSV文件流式传输,apache-spark,spark-csv,Apache Spark,Spark Csv,我正在尝试使用Spark Streaming从NFS上的CSV文件收集数据。 我的代码非常简单,到目前为止,我只在spark shell中运行它,但即使在那里,我也遇到了一些问题 我使用一个独立的spark master和6个Worker运行spark shell,并将以下参数传递给spark shell: --主人spark://master.host:7077 --num executors 3——conf spark.cores.max=10 代码如下: val schema = spar
val schema = spark.read.option("header", true).option("mode", "PERMISSIVE").csv("/nfs/files_to_collect/schema/schema.csv").schema
val data = spark.readStream.option("header", true).schema(schema).csv("/nfs/files_to_collect/jobs/jobs*")
val query = data.writeStream.format("console").start()
该NFS路径中有2个文件,每个文件大小约为200MB。
当我调用writeStream时,会收到以下警告:
“17/11/13 22:56:31警告TaskSetManager:阶段2包含非常大的任务(106402KB)。建议的最大任务大小为100 KB。”
查看Spark master UI,我发现只使用了一个执行器——创建了四个任务,每个任务读取每个CSV文件的50%
我的问题是:
1) NFS路径中的文件越多,驱动程序似乎需要的内存就越多—有2个文件,它就会崩溃,直到我将其内存增加到2g。有4个文件,它需要不少于8g。驱动程序在做什么,需要这么多内存
2) 如何控制读取CSV文件的并行性?我注意到文件越多,创建的任务就越多,但是否可以手动控制?您有什么解决方案吗?我面临同样的问题