Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 火花缓存与拼花数据_Apache Spark_Caching_Parquet - Fatal编程技术网

Apache spark 火花缓存与拼花数据

Apache spark 火花缓存与拼花数据,apache-spark,caching,parquet,Apache Spark,Caching,Parquet,我发现Spark缓存存在问题。我正在使用Spark through Spark shell读取拼花地板数据(大约50GB)(用Snappy压缩)。然后我使用选项MEMORY\u ONLY\u SER缓存这些数据。数据是100%缓存的。令人惊讶的是,这些数据在缓存中占据了500GB的空间 有没有办法确保缓存只包含大约50GB的数据?我尝试设置spark.io.compression.codec=“org.apache.spark.io.SnappyCompressionCodec”和spark.r

我发现Spark缓存存在问题。我正在使用Spark through Spark shell读取拼花地板数据(大约50GB)(用Snappy压缩)。然后我使用选项MEMORY\u ONLY\u SER缓存这些数据。数据是100%缓存的。令人惊讶的是,这些数据在缓存中占据了500GB的空间

  • 有没有办法确保缓存只包含大约50GB的数据?我尝试设置spark.io.compression.codec=“org.apache.spark.io.SnappyCompressionCodec”和spark.rdd.compress=true,但这并没有给出我想要的结果。默认情况下,spark.sql.inMemoryColumnarStorage.compressed为true,spark.sql.inMemoryColumnarStorage.batchSize设置为10000

  • 此外,我还尝试使用选项“MEMORY\u ONLY”缓存此数据。数据是100%缓存的,但它在缓存中占用的空间是500 GB,即与仅使用内存的情况相同。我以为这会更糟。因此,以序列化格式存储数据似乎没有帮助。有线索吗

  • 我还注意到,如果我对磁盘上的拼花地板数据运行简单的查询,如“获取列的不同计数”,操作只读取50GB数据中的5GB(即只读取特定列),而如果在缓存100%的数据(=500GB)后运行相同的查询,该操作读取/处理整个500 GB的缓存数据,即不读取特定于给定列的数据,这也很奇怪,知道吗


  • 第三点是预期的(见相关和),实际上我的镶木地板数据是深度嵌套的,我读到Spark无法处理嵌套的镶木地板数据。分解这些数据,然后缓存它们会有任何帮助吗?