【发布时间】:2022-11-03 02:24:44
【问题描述】:
我们的数据存储在远程 Hadoop 集群中,但是为了做一些 PoC,我需要在我的机器上本地运行 spark 应用程序。如何从远程 HDFS 加载数据?
【问题讨论】:
-
对于 PoC,只需将数据从 HDFS 复制到您的计算机 :)
标签: apache-spark hadoop hdfs
我们的数据存储在远程 Hadoop 集群中,但是为了做一些 PoC,我需要在我的机器上本地运行 spark 应用程序。如何从远程 HDFS 加载数据?
【问题讨论】:
标签: apache-spark hadoop hdfs
您可以configure spark 访问您有权访问的任何 hadoop 实例。(端口打开,节点可访问)
自定义 Hadoop/Hive 配置
如果您的 Spark 应用程序正在与 Hadoop、Hive 或两者交互,则可能存在 Hadoop/Hive Spark 的类路径中的配置文件。
多个正在运行的应用程序可能需要不同的 Hadoop/Hive 客户端配置。可以复制修改hdfs-site.xml, Spark 的类路径中的 core-site.xml、yarn-site.xml、hive-site.xml 每个应用程序。在 YARN 上运行的 Spark 集群中,这些 配置文件是在集群范围内设置的,不能安全地更改 由应用程序。
当您想要访问 HDFS 时,您需要:您尝试访问的集群中的 hdfs-site.xml 和 core-site.xml。
【讨论】:
对于任何想要从 Spark Java 应用程序访问远程 HDFS 的人,这里是步骤。
首先,您需要在运行命令中添加 --conf 键。取决于 Spark 版本:
其次,当你创建 Spark 的 Java 上下文时,添加:
javaSparkContext.hadoopConfiguration().addResource(new Path("core-site-clusterB.xml"));
javaSparkContext.hadoopConfiguration().addResource(new Path("hdfs-site-clusterB.xml"));
如果您遇到此异常:
java.net.UnknownHostException:clusterB
然后尝试将带有端口(而不是 hdfs/cluster 短名称)的远程 HDFS 的完整名称节点地址放入 --conf 到您的运行命令中。
更多细节在我的文章中:https://mchesnavsky.tech/spark-java-access-remote-hdfs。
【讨论】: