开发者社区> 问答> 正文

Hadoop Spark docker swarm其中pyspark给出BlockMissingException但文件很好

基于https://github.com/gotthardsen/docker-hadoop-spark-workbench/tree/master/swarm我有一个带有hadoop,spark,hue和jupyter笔记本设置的docker swarm设置。

使用Hue我将文件上传到hdfs,我没有问题从hue或在namenode上的hdfs中下载或查看文件。没有丢失的块和文件检查说一切都很好。

但是当我尝试在jupyter中使用pyspark访问它时,我得到一个:

org.apache.hadoop.hdfs.BlockMissingException:无法获取块:BP-296583215-10.0.0.6-1542473394293:blk_1073741833_1009 file = / 20170930.csv

我知道这不是关于缺失块,但更可能是其他东西。但我无法弄清楚为什么。使用python2内核的工作簿中的代码python代码是:

from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName('hello').setMaster('spark://spark-master:7077')
sc = SparkContext(conf=conf)

from pyspark.sql import SparkSession
Read from HDFS
sparkSession = SparkSession(sc)
df_load = sparkSession.read.csv('hdfs://namenode:9000/20170930.csv')
df_load.show()
问题出在:

df_load = sparkSession.read.csv('hdfs://namenode:9000/20170930.csv')
我不能在不同的日志中看到任何能给我一些线索的东西。只有INFO线

展开
收起
社区小助手 2018-12-12 14:08:23 2393 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    由于Docker容器是短暂的,因此datanode容器可能会消失,因此其中的数据也会消失,但namenode仍然知道该文件曾经存在。

    我不知道Swarm中的节点关联规则,但您应该尝试将卷挂载添加到namenode和datanode容器中,并确保它们只能在单个计算机上进行调度(假设您有多个,因为您是使用Swarm而不仅仅是Compose)

    可能是一样的,但我用Hue,Juptyer,NameNode和Datanode 做了我自己的Docker Compose,我用PySpark测试了它

    2019-07-17 23:20:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载