Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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 拼花地板如何处理SparseVector柱?_Apache Spark_Pyspark_Parquet - Fatal编程技术网

Apache spark 拼花地板如何处理SparseVector柱?

Apache spark 拼花地板如何处理SparseVector柱?,apache-spark,pyspark,parquet,Apache Spark,Pyspark,Parquet,我对派斯帕克很陌生。我正在构建一个tfidf,并希望作为中间结果将其存储在磁盘中。现在,以色列国防军的得分给了我一个稀疏的代表 然而,当我试图将它保存为拼花地板时,我得到了OOM。我不确定它是否在内部将SparseVector转换为稠密,因为在这种情况下,它将导致大约25k列,根据thread,以列格式保存这样的大数据可能会导致OOM 那么,你知道会是什么情况吗?我有8g的执行器内存,在2g CSV文件上运行 我应该尝试增加内存还是将其保存在CSV而不是拼花地板中?感谢您的帮助。提前谢谢 更新1

我对派斯帕克很陌生。我正在构建一个tfidf,并希望作为中间结果将其存储在磁盘中。现在,以色列国防军的得分给了我一个稀疏的代表

然而,当我试图将它保存为拼花地板时,我得到了OOM。我不确定它是否在内部将SparseVector转换为稠密,因为在这种情况下,它将导致大约25k列,根据thread,以列格式保存这样的大数据可能会导致OOM

那么,你知道会是什么情况吗?我有8g的执行器内存,在2g CSV文件上运行

我应该尝试增加内存还是将其保存在CSV而不是拼花地板中?感谢您的帮助。提前谢谢

更新1


正如所指出的,Spark执行延迟计算,错误可能是由于上游阶段,我在编写之前尝试了show和collect。他们似乎运行良好,没有出现错误。那么,这仍然是与Parquet相关的问题,还是我需要一些其他调试?

Parquet不提供对Spark ML/MLlib向量的本机支持,Spark SQL中的这些一流公民也不提供本机支持

相反,Spark使用带三个字段的结构字段表示向量:

类型-字节类型 size-IntegerType可选,仅适用于SparSevector 索引-ArrayTypeIntegerType可选,仅适用于SparSevector 值-ArrayTypeDoubleType 并使用元数据将其与普通结构区分开来,并使用UDT包装器映射回外部类型。不需要在稀疏表示和密集表示之间进行转换。尽管如此,根据数据的不同,这种表示可能需要与全密集阵列相当的内存


请注意,写时OOM不一定与写过程本身有关。由于Spark通常是惰性的,因此任何上游阶段都可能导致异常

Parquet不提供对Spark ML/MLlib向量的本机支持,Spark SQL中的这些一等公民也不支持

相反,Spark使用带三个字段的结构字段表示向量:

类型-字节类型 size-IntegerType可选,仅适用于SparSevector 索引-ArrayTypeIntegerType可选,仅适用于SparSevector 值-ArrayTypeDoubleType 并使用元数据将其与普通结构区分开来,并使用UDT包装器映射回外部类型。不需要在稀疏表示和密集表示之间进行转换。尽管如此,根据数据的不同,这种表示可能需要与全密集阵列相当的内存


请注意,写时OOM不一定与写过程本身有关。由于Spark通常是惰性的,因此任何上游阶段都可能导致异常

哇!这确实是一个非常翔实的答案。从中学到了很多新东西。然而,我在写之前做了一个show和collect来验证它是否是由任何上游代码引起的。但两者都进展顺利,没有出现错误。只有回信给了它哇!这确实是一个非常翔实的答案。从中学到了很多新东西。然而,我在写之前做了一个show和collect来验证它是否是由任何上游代码引起的。但两者都进展顺利,没有出现错误。只有回信才会给它