【发布时间】:2018-05-22 20:28:53
【问题描述】:
我在内存问题上遇到了一些问题,但我无法解决。非常感谢任何帮助。 我是 Spark 和 pyspark 功能的新手,我试图读取一个大小约为 5GB 的大型 JSON 文件并使用
构建 rdddf = spark.read.json("example.json")
每次运行上述语句时,都会出现以下错误:
java.lang.OutOfMemoryError : Java heap space
我需要以 RDD 的形式获取 JSON 数据,然后使用 SQL Spark 进行操作和分析。但是我在第一步(读取 JSON)本身就出错了。 我知道要读取如此大的文件,需要对 Spark Session 的配置进行必要的更改。 我按照Apache Spark: Job aborted due to stage failure: "TID x failed for unknown reasons"给出的答案 和Spark java.lang.OutOfMemoryError: Java heap space
我尝试更改 SparkSession 的配置,但我想我可能误解了某些设置。以下是我的火花配置。
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.memory.fraction", 0.8) \
.config("spark.executor.memory", "14g") \
.config("spark.driver.memory", "12g")\
.config("spark.sql.shuffle.partitions" , "8000") \
.getOrCreate()
我为驱动程序内存和执行程序内存等不同参数设置的值是否有任何错误。除了这个,我还需要设置更多的配置参数吗?
【问题讨论】:
-
你是在那个 DataFrame 上调用
.collect()还是.show()? -
我想,一旦我创建了 RDD df。
-
尝试在 hdfs 中使用您的 json 文件。
-
读取 JSON 文件后调用的操作是什么?如果不是,错误何时发生?它是普通的文本文件还是压缩文件?另外,请尝试不要在您的问题中设置
spark.memory.fraction和edit 的详细信息。谢谢。 -
如果您可以拆分原始 JSON 文件(希望它是一个数组),请执行此操作,然后将拆分放在一个文件夹中,然后读取该文件夹。希望你有一个工具来分割这么大的文件,我只需要分割一个 500Mb 的文件,所以我使用了 Python。
标签: apache-spark pyspark