apache-spark - Spark:无法从 HDFS 读取文件
问题描述
我有一个存储在 HDFS 中的文件,我可以使用hdfs dfs -ls /user
. 我也可以使用:
text_RDD = sc.textFile("hdfs://localhost/user/testfile1.txt")
text_RDD.take(1)
但奇怪的是,当我这样做时:
text_RDD = sc.textFile("/user/testfile1.txt")
text_RDD.take(1)
这是一个错误:
Py4JJavaError: An error occurred while calling o325.partitions.
: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/user/testfile1.txt
at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:287)
at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:229)
at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:315)
at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:204)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:253)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:251)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:251)
at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:49)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:253)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:251)
at scala.Option.getOrElse(Option.scala:121)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:251)
at org.apache.spark.api.java.JavaRDDLike$class.partitions(JavaRDDLike.scala:61)
at org.apache.spark.api.java.AbstractJavaRDDLike.partitions(JavaRDDLike.scala:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
at py4j.Gateway.invoke(Gateway.java:282)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:238)
at java.lang.Thread.run(Thread.java:745)
我不太明白为什么我不能使用第二种方法?
解决方案
推荐阅读
- c# - R.NET 适用于 x86 但不适用于 x64
- python - 仅在VS代码中“模块'PyQt.QtWidgets'中没有名称'QWidget'”
- amazon-web-services - Bash、Conda、Docker 和 Ray:应该向 Ray 提供哪些启动命令,以便在运行时正确获取 docker 容器中的 bash 配置文件?
- c++ - Question about std::function when using with static member function
- jquery - JQuery 没有导入,控制台告诉我我没有导入脚本,即使我做了
- python - Python多处理队列未显示结果
- transactions - 计算机科学中共识和交易之间的关系是什么?
- android - 如何将 2 个 LiveData 字段的结果组合到另一个不同类型的 LiveData 字段中
- python - 如何找到 tf.Dataset 的 len()
- c++ - 读取特定的行和列 C++