Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/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
Apache spark Spark SQL createDataFrame()引发OutOfMemory异常_Apache Spark_Apache Spark Sql_Pyspark - Fatal编程技术网

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需要在内存中创建整个数据帧,然后才能持久化它。如果你想“摆脱记忆”,那可能是关键的障碍。你不会说你是如何创造它的。也许有一些解决方法,比如创建并将其保存在较小的片段中,通过序列化将其保存到内存和磁盘,然后将这些片段组合起来。

这是一个很好的解决方法。你的设置是什么?配置是什么?您得到的确切错误是什么?