我正在讀一個83 mbjson文件使用“spark.read.json (storage_path)”,when I display the data is seems displaying fine, but when I try command line count, it complains about file size , being more than400 mb,這是不正確的。
光子JSON讀者錯誤:JSON文檔超過最大允許大小400.0 MiB。任何單個文檔必須符合在該內存的預算。
在0 x4fe8a91 <光子> .UnrecoverableError(外部/ workspace_spark_3_3 /光子/ io / json / simd-json-util.h: 33)
在0 x4fe8974 <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:286)
在0 x4fe907c <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:287)
在0 x4fe907c <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:287)
在0 x4fe907c <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:287)
在0 x4fe907c <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:287)
在0 x4fe907c <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:287)
在0 x4fe907c <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:287)
在0 x4fe907c <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:287)
在0 x4fe907c <光子> .TryLoadDocumentsFromStream(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:287)
在0 x4fe929f <光子> .NextInput(外部/ workspace_spark_3_3 /光子/ io / json /simd-json-reader.cc:308)
在0 x4ac26de <光子> .OpenFileForReading(外部/ workspace_spark_3_3 /光子/ exec-nodes /json-file-scan-node.cc:501)
在0 x4ac1058 <光子> .OpenImpl(外部/ workspace_spark_3_3 /光子/ exec-nodes /json-file-scan-node.cc:402)
在0 x49cc47c <光子> .OpenImpl(外部/ workspace_spark_3_3 /光子/ exec-nodes /grouping-agg-node.cc:92)
在0 x49cc47c <光子> .OpenImpl(外部/ workspace_spark_3_3 /光子/ exec-nodes /shuffle-sink-node.cc:146)
在com.databricks.photon.JniApiImpl。打開(本機方法)
com.databricks.photon.JniApi.open (JniApi.scala)
com.databricks.photon.JniExecNode.open (JniExecNode.java: 64)
在com.databricks.photon.PhotonShuffleMapStageExec。anonfun preShuffleRDDInternal美元9美元(PhotonExec.scala: 809)
在scala.runtime.java8.JFunction0專門sp.apply美元(美元JFunction0 mcV $ sp.java: 23)
com.databricks.photon.PhotonExec.timeit (PhotonExec.scala: 344)
是什麼導致了這個錯誤?這是一個錯誤嗎?光子同樣沒問題當我關掉引擎。
@Kamal Kumar:
錯誤消息表明,JSON文檔大小超過了最大允許的大小為400 mb。這可能是由一個或多個文件在你的JSON文件超過這個極限。這不是一個錯誤,而是一個限製設定的光子JSON讀者。
為了解決這個問題,你可以嚐試把JSON文件分成小塊,分別處理。您可以使用工具如金橋或者在Linux或Python庫像ijson分裂。或者,您可以考慮使用不同的JSON讀者,沒有這個限製。
另一個可能導致這個錯誤可能是內存的問題。如果您的係統沒有足夠的內存來處理大型JSON文件,它可能會導致你看到的錯誤。在這種情況下,您可能需要增加的內存分配給你的火花工作或優化你的代碼使用更少的內存。