Apache spark Spark SQL createDataFrame()引发OutOfMemory异常
它会在内存中创建整个数据帧吗Apache spark Spark SQL createDataFrame()引发OutOfMemory异常,apache-spark,apache-spark-sql,pyspark,Apache Spark,Apache Spark Sql,Pyspark,它会在内存中创建整个数据帧吗 如何创建一个大型数据框(>100万行)并将其保留以供以后查询?要将其保留以供以后查询,请执行以下操作: val sc: SparkContext = ... val hc = new HiveContext( sc ) val df: DataFrame = myCreateDataFrameCode(). coalesce( 8 ).persist( StorageLevel.MEMORY_ONLY_SER ) df.show() 这将把数据
如何创建一个大型数据框(>100万行)并将其保留以供以后查询?要将其保留以供以后查询,请执行以下操作:
val sc: SparkContext = ...
val hc = new HiveContext( sc )
val df: DataFrame = myCreateDataFrameCode().
coalesce( 8 ).persist( StorageLevel.MEMORY_ONLY_SER )
df.show()
这将把数据帧合并为8个分区,然后通过序列化将其持久化。不确定我能说什么数量的分区是最好的,甚至可能是“1”。检查StorageLevel
文档中的其他持久性选项,例如MEMORY\u和\u DISK\u SER
,它们将同时持久化到内存和磁盘
在回答第一个问题时,是的,我认为Spark需要在内存中创建整个数据帧,然后才能持久化它。如果你想“摆脱记忆”,那可能是关键的障碍。你不会说你是如何创造它的。也许有一些解决方法,比如创建并将其保存在较小的片段中,通过序列化将其保存到内存和磁盘,然后将这些片段组合起来。这是一个很好的解决方法。你的设置是什么?配置是什么?您得到的确切错误是什么?