【问题标题】:HDFS Unit testing in Spark 1.6Spark 1.6 中的 HDFS 单元测试
【发布时间】:2017-02-05 13:13:41
【问题描述】:


我正在 Spark 1.6 应用程序中编写单元测试,并且必须模拟 HDFS。正在使用 MiniDFSCluster https://wiki.apache.org/hadoop/HowToDevelopUnitTests,如此处所述。我在当前 Spark 1.6 代码中没有看到任何使用 MiniDFSCluster 的示例。

【问题讨论】:

  • 您尝试过发布的任何解决方案吗?

标签: apache-spark


【解决方案1】:

下面是一个显示如何设置和使用集群的 sn-p。

    val conf = new HdfsConfiguration()
    val testDataCluster = new File("/var/path", "root")
    conf.set(MiniDFSCluster.HDFS_MINIDFS_BASEDIR, testDataCluster.getAbsolutePath)
    conf.setInt("dfs.blocksize", 512)
    conf.setInt("dfs.namenode.fs-limits.min-block-size", 512)
    val dfs =  new MiniDFSCluster.Builder(conf).build()
    dfs.waitActive()
    val fileSystem: org.apache.hadoop.fs.FileSystem = dfs.getFileSystem
    fileSystem.copyFromLocalFile(false, new Path(sourceDir),
      new Path(hdfsDir))

您可能需要的一些依赖项是(以下是 sbt 模块定义格式)

  "org.apache.hadoop" % "hadoop-client" % "2.7.2" % "provided",
  "org.apache.hadoop" % "hadoop-hdfs" % "2.7.2" % "test",
  "org.apache.hadoop" % "hadoop-common" % "2.7.2" % "test",
  "org.apache.hadoop" % "hadoop-hdfs" % "2.7.2" % "test" classifier "tests",
  "org.apache.hadoop" % "hadoop-common" % "2.7.2" % "test" classifier "tests"

【讨论】:

  • 这个解决方案在我使用 Hadoop 2.8.3 的 SBT 项目中运行良好。我在添加依赖项之前尝试过 "org.apache.hadoop" % "hadoop-minicluster" % "2.8.3" % "test" 作为许多其他地方的建议,但这不起作用,我的 sbt 没有导入 HDFS 测试类。
  • 是的,在2.7.22.7.1 甚至是最新的3.3.0 版本上浪费了很多天。版本2.8.3 就像一个魅力!我将它与 spark 3.0.2 一起使用
猜你喜欢
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 2017-05-12
  • 2021-09-18
  • 2015-09-05
  • 1970-01-01
  • 2017-02-23
  • 2021-02-23
相关资源
最近更新 更多