为了账号安全,请及时绑定邮箱和手机立即绑定

总分配超过堆内存的 95.00%(960,285,889 字节)-pyspark 错误

总分配超过堆内存的 95.00%(960,285,889 字节)-pyspark 错误

料青山看我应如是 2021-08-24 14:57:52
我在 python 2.7 中编写了一个脚本,使用 pyspark 将 csv 转换为镶木地板和其他东西。当我在小数据上运行我的脚本时,它运行良好,但是当我在更大的数据 (250GB) 上运行时,我发现了以下错误 - 总分配超过了堆内存的 95.00%(960,285,889 字节)。我该如何解决这个问题?它发生的原因是什么?天!部分代码:导入的库: import pyspark as ps    from pyspark.sql.types import StructType, StructField, IntegerType,     DoubleType, StringType, TimestampType,LongType,FloatType    from collections import OrderedDict    from sys import argv使用pyspark: schema_table_name="schema_"+str(get_table_name()) print (schema_table_name) schema_file= OrderedDict()schema_list=[]ddl_to_schema(data)for i in schema_file:schema_list.append(StructField(i,schema_file[i]()))schema=StructType(schema_list)print schemaspark = ps.sql.SparkSession.builder.getOrCreate()df = spark.read.option("delimiter", ",").format("csv").schema(schema).option("header", "false").load(argv[2])df.write.parquet(argv[3])# df.limit(1500).write.jdbc(url = url, table = get_table_name(), mode =   "append", properties = properties)# df = spark.read.jdbc(url = url, table = get_table_name(), properties =   properties)pq = spark.read.parquet(argv[3])pq.show()只是为了澄清 schema_table_name 是为了保存所有表名称(在适合 csv 的 DDL 中)。函数 ddl_to_schema 只需采用常规 ddl 并将其编辑为 parquet 可以使用的 ddl。
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

如果您运行本地脚本并且不spark-submit直接使用,您可以这样做:

import os
os.environ["PYSPARK_SUBMIT_ARGS"] = "--driver-memory 2g"


查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信