解決方案:
我不需要添加任何遺囑執行人或驅動程序內存中所有我必須要做我的情況下被添加:——選項(“maxRowsInMemory”, 1000)。
之前我甚至不讀9 mb文件現在我剛讀了一個50 mb的文件沒有任何錯誤。
{
瓦爾df=火花.read
.format (“com.crealytics.spark.excel”)。
選項(“maxRowsInMemory”, 1000)。
選項(“頭”,“真正的”)。
加載(“數據/ 12 file.xlsx”)
}
我想讀8 mb的excel文件,
我得到這個錯誤。
我使用intellij如果是2.4.4火花
scala 2.12.12
jdk 1.8和
這是我的代碼:-
瓦爾相依= new SparkConf ()
這裏(“spark.driver.memory”、“4 g”)
這裏(“spark.executor。內存”、“6克”)
/ /這裏(“spark.executor。核”、“2”)
瓦爾火花= SparkSession
。構建器
.appName (“trimTest”)
部分(“地方[*]”)
. config (相依)
.getOrCreate ()
瓦爾df=火花.read
.format (“com.crealytics.spark.excel”)。
選項(“頭”,“真正的”)。
加載(“數據/ 12 file.xlsx”)
現在,這些是我的火花界麵截圖,
你能告訴我什麼是主要問題,我怎麼能增加作業執行器的記憶。
棧:
. lang。OutOfMemoryError: GC開銷限製超過
java.lang.Class.newReflectionData (Class.java: 2511)
java.lang.Class.reflectionData (Class.java: 2503)
java.lang.Class.privateGetDeclaredConstructors (Class.java: 2660)
java.lang.Class.getConstructor0 (Class.java: 3075)
java.lang.Class.newInstance (Class.java: 412)
在sun.reflect.MethodAccessorGenerator 1.美元運行(MethodAccessorGenerator.java: 403)
在sun.reflect.MethodAccessorGenerator 1.美元運行(MethodAccessorGenerator.java: 394)
在java.security.AccessController。doPrivileged(本地方法)
sun.reflect.MethodAccessorGenerator.generate (MethodAccessorGenerator.java: 393)
sun.reflect.MethodAccessorGenerator.generateMethod (MethodAccessorGenerator.java: 75)
在sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 53)
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 43)
java.lang.reflect.Method.invoke (Method.java: 498)
sun.reflect.misc.MethodUtil.invoke (MethodUtil.java: 276)
com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn (ConvertingMethod.java: 193)
com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn (ConvertingMethod.java: 175)
com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2 (MXBeanIntrospector.java: 117)
com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2 (MXBeanIntrospector.java: 54)
com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM (MBeanIntrospector.java: 237)
com.sun.jmx.mbeanserver.PerInterface.getAttribute (PerInterface.java: 83)
com.sun.jmx.mbeanserver.MBeanSupport.getAttribute (MBeanSupport.java: 206)
javax.management.StandardMBean.getAttribute (StandardMBean.java: 372)
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute (DefaultMBeanServerInterceptor.java: 647)
com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute (JmxMBeanServer.java: 678)
com.sun.jmx.mbeanserver.MXBeanProxy GetHandler.invoke美元(MXBeanProxy.java: 122)
com.sun.jmx.mbeanserver.MXBeanProxy.invoke (MXBeanProxy.java: 167)
javax.management.MBeanServerInvocationHandler.invoke (MBeanServerInvocationHandler.java: 258)
在com.sun.proxy。Proxy8美元。getMemoryUsed(未知來源)
org.apache.spark.metrics.MBeanExecutorMetricType.getMetricValue (ExecutorMetricType.scala: 67)
org.apache.spark.metrics.SingleValueExecutorMetricType.getMetricValues (ExecutorMetricType.scala: 46)
在org.apache.spark.metrics.SingleValueExecutorMetricType.getMetricValues (ExecutorMetricType.scala: 44美元)
org.apache.spark.metrics.MBeanExecutorMetricType.getMetricValues (ExecutorMetricType.scala: 60)
我想的確是一個配置問題引發腳本你似乎不做任何行動(火花是懶惰的評估)。
當你在本地運行火花,JVM無法分配足夠的內存來運行成功。
你能檢查文檔:
https://spark.apache.org/docs/2.4.4/tuning.html garbage-collection-tuning