【问题标题】:How to run .jar on Spark on Hortonworks VM?如何在 Hortonworks VM 上的 Spark 上运行 .jar?
【发布时间】:2016-07-20 00:39:50
【问题描述】:

我是 Hortonworks VM 的新手,我很困惑。我正在尝试在 Spark 上运行 .jar 文件。通常我通过运行在 Windows 上进行本地测试

spark-submit --driver-memory 4g --class en.name.ClassName %CODE%/target/program.jar

但由于我需要 Hive,我想我会转移到 Hortonworks VM 以进行本地测试。现在,我已经通过 Hortonworks 的 Ambari 的 HDFS 文件 GUI 将我的 .jar 和输入文件上传到了 HDFS(到 /tmp/my_code 目录)。接下来是什么?我还找到了命令行,但是如何从 VM 的命令行访问 HDFS 上的 .jar?我正在尝试运行

spark-submit --driver-memory 4g --class en.name.ClassName /tmp/my_code/program.jar 来自沙盒 condole(默认情况下在 http://127.0.0.1:4200/ 上运行的,root@sandbox“Shell in a Box”),它不起作用。它说 .jar 不存在。如何让 VM 在 HDFS 上使用 .jar? 谢谢!

【问题讨论】:

    标签: java hadoop virtual-machine hortonworks-data-platform


    【解决方案1】:

    JAR 应该在本地文件系统上,而不是在 hdfs 中。只有输入文件应该在hdfs 中。所以/tmp/my_code/program.jar 路径应该是本地的,这就是您看到该错误的原因:the .jar does not exists

    如果你运行这个命令:

    >spark-submit --help
    

    你会看到:

     --jars JARS   Comma-separated list of local jars to include on the driver
                   and executor classpaths.
    

    更新: 根据Documentations

    application-jar:包含您的应用程序和的捆绑 jar 的路径 所有依赖项。该 URL 必须在您的内部全局可见 集群,例如 hdfs:// 路径或 file:// 路径 存在于所有节点上。

    所以,

    如果 jar 在 hdfs 上:

    spark-submit --driver-memory 4g --class en.name.ClassName hdfs://target/program.jar

    如果 jar 在本地:

    spark-submit --driver-memory 4g --class en.name.ClassName /target/program.jar

    spark-submit --driver-memory 4g --class en.name.ClassName file://target/program.jar

    【讨论】:

    • 嗯。好的,我试试这个。在这种情况下,如何在我的代码中指定 Hadoop 上文件的路径?所以,我像DataFrame df = sqlContext.read().json("?path?"); 一样阅读它,?path? 中的内容是什么?如何指定从 HDFS 读取?我只是输入hdfs://tmp/my_data/*.json吗?
    • 是的,您可以将hdfs://tmp/my_data/*.json 用于hdfs 输入文件。对于使用本地输入文件,您必须指定file:/,但我认为对于hdfs文件,您不需要在路径中使用hdfs:/,但使用它是一个好习惯。
    猜你喜欢
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多