《Spark环境部署》spark-shell环境下配置本地读入文本信息时出现报错: console>:17: error: not found: value sc

在Spark环境部署中,尝试使用`spark-shell`读取本地文本时遇到报错,原因是Hadoop处于安全模式。错误信息提示不能创建目录,名节点在安全模式下。解决方案是通过`hadoop dfsadmin -safemode leave`命令退出Hadoop的安全模式。

Spark环境部署,配置本地读入文本信息时出现报错:

Caused by: org.apache.hadoop.ipc.RemoteException: Cannot create directory /tmp/hive/root/648867dc-0554-406f-8a02-233cef6b6cf2. Name node is in safe mode.
The reported blocks 71 needs additional 2 blocks to reach the threshold 0.9990 of total blocks 73.
The number of live datanodes 1 has reached the minimum number 0. Safe mode will be turned off automatically once the thresholds have been reached.
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode(FSNamesystem.java:1335)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:3874)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:984)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:634)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol2.callBlockingMethod(ClientNamenodeProtocolProtos.java)atorg.apache.hadoop.ipc.ProtobufRpcEngine2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine2.callBlockingMethod(ClientNamenodeProtocolProtos.java)atorg.apache.hadoop.ipc.ProtobufRpcEngineServerProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)atorg.apache.hadoop.ipc.RPCProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) at org.apache.hadoop.ipc.RPC

### 解析 Spark 配置过程中 spark-shell 环境启动遇到的 JNI 错误 当尝试启动 `spark-shell` 并收到错误提示 `Error: A JNI error has occurred, please check your installation and try again` ,通常是因为 Java 运行环境(JRE)与编译后的类文件版本不兼容。 具体来说,如果看到异常信息类似于: ``` Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0 ``` 这表明当前使用的 JRE 版本过低,无法识别由较新版本 JDK 编译过的字节码文件[^1]。对于上述情况中的 `class file version 61.0` 对应的是 Java 17,而 `up to 52.0` 则对应于 Java 8。 #### 解决方案概述 为了确保所有组件能够正常工作,建议统一各个依赖项所使用的 Java 版本。考虑到 Spark 和 Spring Boot CLI 的需求,推荐采用如下组合来避免此类问题的发生: - **Java Development Kit (JDK)**: 使用 JDK 11 或更高版本。 - **Scala**: 如果使用特定版本的 Spark,则需确认其支持的 Scala 版本;例如,Spark 3.x 支持 Scala 2.12 及以上版本[^2]。 - **Hadoop/Spark 安装包**: 应选择与选定的 Scala 版本相匹配的二进制分发版。 此外,还需注意检查系统中是否存在多个不同版本的 JDK 安装实例,并通过设置环境变量如 `JAVA_HOME` 来指定要使用的唯一 JDK 路径,从而防止因多版本共存引发冲突[^3]。 #### 实际操作指南 以下是调整环境的具体步骤: 1. 卸载不必要的旧版 JDK; 2. 下载并安装最新稳定版的 OpenJDK 11 或更新版本; 3. 设置或修改系统的 `JAVA_HOME` 环境变量指向新的 JDK 安装目录; 4. 更新命令行工具路径以优先调用新版 JDK 提供的可执行程序; 5. 根据实际项目需求重新下载适合该 Java 版本的 Hadoop/Spark 发布版本; 6. 测试配置更改是否有效,即再次尝试启动 `spark-shell` 查看是否有相同错误重现。 ```bash export JAVA_HOME=/path/to/newly_installed_jdk_directory echo $JAVA_HOME java -version ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值