Ошибки при использовании хранилища OFF_HEAP с Spark 1.4.0 и Tachyon 0.6.4

Я пытаюсь сохранить свой RDD, используя хранилище вне кучи на Spark 1.4.0 и tachyon 0.6.4, делая это следующим образом:

val a = sqlContext.parquetFile("a1.parquet")
a.persist(org.apache.spark.storage.StorageLevel.OFF_HEAP)
a.count()

Впоследствии я получаю следующее исключение.

Есть идеи по этому поводу?

15/06/16 10:14:53 INFO : Tachyon client (version 0.6.4) is trying to connect master @ localhost/127.0.0.1:19998
15/06/16 10:14:53 INFO : User registered at the master localhost/127.0.0.1:19998 got UserId 3
15/06/16 10:14:53 INFO TachyonBlockManager: Created tachyon directory at /tmp_spark_tachyon/spark-6b2512ab-7bb8-47ca-b6e2-8023d3d7f7dc/driver/spark-tachyon-20150616101453-ded3
15/06/16 10:14:53 INFO BlockManagerInfo: Added rdd_10_3 on ExternalBlockStore on localhost:33548 (size: 0.0 B)
15/06/16 10:14:53 INFO BlockManagerInfo: Added rdd_10_1 on ExternalBlockStore on localhost:33548 (size: 0.0 B)
15/06/16 10:14:53 ERROR TransportRequestHandler: Error while invoking RpcHandler#receive() on RPC id 5710423667942934352
org.apache.spark.storage.BlockNotFoundException: Block rdd_10_3 not found
    at org.apache.spark.storage.BlockManager.getBlockData(BlockManager.scala:306)
    at org.apache.spark.network.netty.NettyBlockRpcServer$$anonfun$2.apply(NettyBlockRpcServer.scala:57)
    at org.apache.spark.network.netty.NettyBlockRpcServer$$anonfun$2.apply(NettyBlockRpcServer.scala:57)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
    at org.apache.spark.network.netty.NettyBlockRpcServer.receive(NettyBlockRpcServer.scala:57)
    at org.apache.spark.network.server.TransportRequestHandler.processRpcRequest(TransportRequestHandler.java:114)
    at org.apache.spark.network.server.TransportRequestHandler.handle(TransportRequestHandler.java:87)
    at org.apache.spark.network.server.TransportChannelHandler.channelRead0(TransportChannelHandler.java:101)
    at org.apache.spark.network.server.TransportChannelHandler.channelRead0(TransportChannelHandler.java:51)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:254)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)

Я также пробовал то же самое с текстовым файлом, и мне удалось сохранить его в тахионном режиме. Проблема заключается в сохранении DataFrame, изначально считанного с паркета.


person smikesh    schedule 06.05.2015    source источник
comment
Я думаю, вы добавили этот метод после сборки или, возможно, есть ошибка сборки. Попробуй с ребилдом.   -  person Kaushal    schedule 20.05.2015
comment
Я не добавлял их сам. Spark пытается вызвать их во время сохранения RDD в тахионном режиме.   -  person smikesh    schedule 21.05.2015
comment
Я понятия не имею о тахионах. Сначала вы проверяете версию зависимости, совместима она или нет, или какие-то недостающие зависимости.   -  person Kaushal    schedule 22.05.2015
comment
Можно ли разместить здесь свой код?   -  person Paul H.    schedule 23.06.2015
comment
Вы уверены, что это связано с выделением памяти вне кучи? В этом случае это может быть связано с проблемами сериализации. Интересует и код.   -  person Adrien M.    schedule 01.09.2015
comment
Я добавил код. Кстати, он работает с текстовыми файлами, а с паркетом не работает ...   -  person smikesh    schedule 04.09.2015


Ответы (2)


Кажется, есть связанный отчет об ошибке: https://issues.apache.org/jira/browse/SPARK-10314

Поскольку для этого, похоже, существует запрос на перенос, возможно, вскоре появится возможность исправить это.

Из этой беседы https://groups.google.com/forum/#!topic/tachyon-users/xb8zwqIjIa4, похоже, что Spark использует режим TRY_CACHE для записи в Tachyon, поэтому данные теряются при удалении из кеша.

person benohead    schedule 12.09.2015

Теперь эта проблема устранена. Я могу подтвердить, что теперь это работает с Spark 1.5 и Tachyon 0.7.

person smikesh    schedule 02.11.2015