Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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/3/apache-spark/6.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/7/user-interface/2.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 pyspark dataframe.write.saveAsTable内存错误_Python_Apache Spark_Dataframe_Pyspark - Fatal编程技术网

Python pyspark dataframe.write.saveAsTable内存错误

Python pyspark dataframe.write.saveAsTable内存错误,python,apache-spark,dataframe,pyspark,Python,Apache Spark,Dataframe,Pyspark,我正在循环浏览一组csv文件,其中包含file\u id、mimetype、file\u data,并使用datatricksspark csv创建数据帧。然后我想把这个数据框写到一个拼花蜂巢表上。每个csv文件大约为400MB,根据包含二进制文件(PPT、PDF等)的文件\数据列的大小,包含1到n行。我遇到内存错误,不知道是否有更好的方法,或者如何分别读取或写入每个数据帧行。我正在Cloudera CDH5.5.1上的13节点集群上通过Jupyter运行pyspark for f in fil

我正在循环浏览一组csv文件,其中包含
file\u id、mimetype、file\u data
,并使用
datatricks
spark csv创建数据帧。然后我想把这个数据框写到一个拼花蜂巢表上。每个csv文件大约为400MB,根据包含二进制文件(PPT、PDF等)的
文件\数据列的大小,包含1到n行。我遇到内存错误,不知道是否有更好的方法,或者如何分别读取或写入每个数据帧行。我正在Cloudera CDH5.5.1上的13节点集群上通过Jupyter运行pyspark

for f in files:
   fullpath = path + f
   df = sqlContext.read.format('com.databricks.spark.csv') \
      .options(header='false', 'inferschema='false', nullValue='NULL', treatEmptyValuesAsNulls='true') \
      .load(fullpath), schema = customSchema)
   print df.count()
   df.write.format("parquet").mode("append").saveAsTable(tablename)
   print "done"

首先,您应该在df.count()之前添加一个df.cache(),以避免在整个数据集中读取两次。另外,为什么在
inferSchema
之前有一个引号,为什么在
.load(fullpath)
之后有代码?到底是什么类型的错误?n是什么?如果单行较大(比如说多兆字节),那么每个执行器线程都需要大量内存。更不用说以这种格式保存行二进制文件可能不是最好的主意。