ZeppelinとScalaを使用して大きなJSONファイル(1.5 GB)を読み取ろうとしています。
ZeppelinはSPARKローカルモードでUbuntuOSにインストールされたVMと10GBのRAM。8GBをspark.executor.memoryに割り当てました
私のコードは以下の通りです
val inputFileWeather="/home/shashi/incubator-zeppelin-master/data/ai/weather.json"
val temp=sqlContext.read.json(inputFileWeather)
次のエラーが発生します
org.Apache.thrift.transport.TTransportException
at org.Apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.Java:132)
at org.Apache.thrift.transport.TTransport.readAll(TTransport.Java:86)
at org.Apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.Java:429)
at org.Apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.Java:318)
at org.Apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.Java:219)
at org.Apache.thrift.TServiceClient.receiveBase(TServiceClient.Java:69)
at org.Apache.zeppelin.interpreter.thrift.RemoteInterpreterService$Client.recv_interpret(RemoteInterpreterService.Java:241)
at org.Apache.zeppelin.interpreter.thrift.RemoteInterpreterService$Client.interpret(RemoteInterpreterService.Java:225)
at org.Apache.zeppelin.interpreter.remote.RemoteInterpreter.interpret(RemoteInterpreter.Java:229)
at org.Apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.Java:93)
at org.Apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.Java:229)
at org.Apache.zeppelin.scheduler.Job.run(Job.Java:171)
at org.Apache.zeppelin.scheduler.RemoteScheduler$JobRunner.run(RemoteScheduler.Java:328)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:471)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:262)
at Java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.Java:178)
at Java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.Java:292)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1145)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615)
at Java.lang.Thread.run(Thread.Java:745)
発生したエラーは、Sparkインタープリターの実行に問題があるため、Zeppelinはインタープリタープロセスに接続できませんでした。
何が起こっているのかを正確に知るには、/PATH/TO/ZEPPELIN/logs/*.out
にあるログを確認する必要があります。おそらく、インタプリタログにOOMが表示されます。
VM、10 GBのエグゼキュータメモリ用に8GBを使用するのは無理だと思います(そして、何人のエグゼキュータを開始しますか?)。ドライバのメモリも考慮する必要があります。