Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/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
Python 如何使用Spark将800 GB的数据加载到配置单元表中?_Python_Hadoop_Apache Spark_Hive_Yarn - Fatal编程技术网

Python 如何使用Spark将800 GB的数据加载到配置单元表中?

Python 如何使用Spark将800 GB的数据加载到配置单元表中?,python,hadoop,apache-spark,hive,yarn,Python,Hadoop,Apache Spark,Hive,Yarn,我们有一个三分量磁场(北、东、下)的大时间序列,在许多不同的台站进行测量 我们希望使用Spark和Python分析这些数据。我们使用Spark 1.6.1和纱线作为集群管理器。我正在运行一个spark submit作业,该作业处于Threadclientdeploy模式 在我的代码中,我每月使用sc.binaryFiles读取90-93个文件[30-31个,每个月*3个(北部、东部和北部)],然后对90个文件执行combineByKey,每天将其合并,最终在DataFrame中为所有北部、东部和

我们有一个三分量磁场(北、东、下)的大时间序列,在许多不同的台站进行测量

我们希望使用Spark和Python分析这些数据。我们使用Spark 1.6.1和纱线作为集群管理器。我正在运行一个spark submit作业,该作业处于Thread
client
deploy模式

在我的代码中,我每月使用
sc.binaryFiles
读取90-93个文件[30-31个,每个月*3个(北部、东部和北部)],然后对90个文件执行
combineByKey
,每天将其合并,最终在
DataFrame
中为所有北部、东部和北部获得30天。在所有月份、所有站点和所有年份重复此操作,以将其加载到HDFS上的配置单元表中

我正在尝试将800GB(10年)的数据(每个日期都是17MB的
npy
文件)加载到一个配置单元表中,以便进行数据分析。我们有一个由4个节点组成的集群,拥有122 GB内存和44个vCore。我正在使用488 GB可用内存中的465 GB内存。我使用
pyspark
代码将
npy
文件作为
sc.binaryFiles
读取,每次迭代90个文件。我给spark提交以下参数

--num-executors 16 --driver-memory 2g --executor-memory 26G --executor-cores 10 \
--conf "spark.sql.shuffle.partitions=2048" \
--conf "spark.shuffle.memory.fraction=0.8" \
--conf "spark.storage.memoryFraction=0.2" \
--conf "spark.yarn.executor.memoryOverhead=2600" \
--conf "spark.yarn.nodemanager.resource.memory-mb=123880" \
--conf "spark.yarn.nodemanager.resource.cpu-vcores=43"
但是在大约130次迭代之后,我总是得到以下错误

org.apache.spark.storage.ShuffleBlockFetcherIterator.throwFetchFailedException(ShuffleBlockFetcherIterator.scala:323) 
此外,我每年都会提交一份新工作

即使我每次迭代只处理90个文件,为什么会出现这个错误?是否有可能在一份工作中重复所有年份、所有站点和所有月份?我的迭代逻辑处理了数年、数站和数月,但无法在Spark中毫无故障地运行它


请告诉我如何让spark成功运行我的工作。

原因是你在做很多调整。请检查我的答案,希望helps@philantrovert:谢谢你的编辑。@Ram Ghadiyaram:谢谢你的回答。我将尝试使用spark.sql.shuffle.partitions<2000,并将让您了解工作性能。此外。。。请参阅测试用例以更好地理解Sure。谢谢为了补充我的问题,我已经在分别处理每年的数据。但并非所有年份的数据都相同。如果一年有大约100 Gig的数据,那么我的工作就不可能完成,如果一年没有那么多的数据,那么我的工作就完成了。原因是你在做大量的洗牌。请检查我的答案,希望helps@philantrovert:谢谢你的编辑。@Ram Ghadiyaram:谢谢你的回答。我将尝试使用spark.sql.shuffle.partitions<2000,并将让您了解工作性能。此外。。。请参阅测试用例以更好地理解Sure。谢谢为了补充我的问题,我已经在分别处理每年的数据。但并非所有年份的数据都相同。如果一年有大约100吉比特的数据,那么我的工作就不可能完成,如果一年没有那么多的数据,它就完成了。