我想使用Scala/Spark列出hdfs目录中的所有文件夹.在Hadoop中,我可以使用以下命令执行此操作:hadoop fs -ls hdfs://sandbox.hortonworks.com/demo/
我尝试过:
val conf = new Configuration()
val fs = FileSystem.get(new URI("hdfs://sandbox.hortonworks.com/"), conf)
val path = new Path("hdfs://sandbox.hortonworks.com/demo/")
val files = fs.listFiles(path, false)
Run Code Online (Sandbox Code Playgroud)
但它似乎并没有在Hadoop目录中查找,因为我找不到我的文件夹/文件.
我也尝试过:
FileSystem.get(sc.hadoopConfiguration).listFiles(new Path("hdfs://sandbox.hortonworks.com/demo/"), true)
Run Code Online (Sandbox Code Playgroud)
但这也无济于事.
你还有其他想法吗?
PS:我也检查过这个帖子:Spark迭代HDFS目录,但它对我不起作用,因为它似乎不在hdfs目录上搜索,而只在具有模式文件的本地文件系统上搜索//.
如标题.我知道textFile,但顾名思义,它仅适用于文本文件.我需要访问HDFS(或本地路径)上的路径内的文件/目录.我正在使用pyspark
感谢帮助
在Spark文档中提交应用程序时,从1.6.0及更早版本开始,目前尚不清楚如何指定--jars参数,因为它显然不是冒号分隔的类路径而不是目录扩展.
文档说"捆绑jar的路径,包括你的应用程序和所有依赖项.URL必须在集群内部全局可见,例如,hdfs://路径或所有节点上都存在的file://路径. "
问题:在$ SPARK_HOME/bin的spark-submit脚本中使用--jars提交类路径的所有选项有哪些?任何未记录的内容可以作为文档的改进提交?
我问,因为当我测试 - 今天的时候,我们必须明确地提供每个jar的路径:
/usr/local/spark/bin/spark-submit --class jpsgcs.thold.PipeLinkageData ---jars=local:/usr/local/spark/jars/groovy-all-2.3.3.jar,local:/usr/local/spark/jars/guava-14.0.1.jar,local:/usr/local/spark/jars/jopt-simple-4.6.jar,local:/usr/local/spark/jars/jpsgcs-core-1.0.8-2.jar,local:/usr/local/spark/jars/jpsgcs-pipe-1.0.6-7.jar /usr/local/spark/jars/thold-0.0.1-1.jar
Run Code Online (Sandbox Code Playgroud)
我们选择在每个worker上的/ usr/local/spark/jars中使用所有jar预填充集群,似乎如果没有提供local:/ file:/或hdfs:那么默认为file:/并且驱动程序使驱动程序运行的Web服务器上的jar可用.我选择了本地,如上所述.
而且似乎我们不需要将主jar放在--jars参数中,我还没有测试过最后一个参数中的其他类(application-jar arg per docs,即/ usr/local/spark/jars/thold-0.0.1-1.jar)被发送给worker,或者如果我需要将application-jar放在-jars路径中以获取未在--class之后命名的类.
(并且使用--deploy-mode客户端使用Spark独立模式授予,您还必须在每个worker上放置驱动程序的副本,但您不知道哪个worker会运行驱动程序)