Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用Spark从CSV文件流式传输_Apache Spark_Spark Csv - Fatal编程技术网

Apache spark 使用Spark从CSV文件流式传输

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

我正在尝试使用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 = 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文件的并行性?我注意到文件越多,创建的任务就越多,但是否可以手动控制?

您有什么解决方案吗?我面临同样的问题