我正在尝试下载一个hadoop文件(我的hadoop数据在azure数据湖中)。使用下面的脚本,但我得到的jvm错误。有什么帮助吗? sc = spark.sparkContext URI = sc._gateway.jvm.java.net.URI hadoop = sc._gateway.jvm.org.apache.hadoop conf = hadoop.conf.Configuration() fs = hadoop.fs.FileSystem.get(URI('adl://account.azuredatalakestore.net'), conf) hadoop.fs.FileSystem.copyToLocalFile('/test/test_merge.txt','/tmp/')
错误:py4jerror:org.apache.hadoop.fs.filesystem.copytolocalfile在jvm中不存在
注意:我尝试了python子进程,但现在不想使用。
2条答案
按热度按时间olqngx591#
我在官方文档中检查了hadoop版本中不同版本的azurehdinsight
What are the Apache Hadoop components and versions available with HDInsight?
如下图所示。hdinsight 3.5、3.6和4.0使用apachehadoop版本2.7.3和3.1.1。
我查看了apachehadoop的javadocs以获取api
org.apache.hadoop.fs.FileSystem.copyToLocalFile
,然后我发现有三种类型的函数copyToLocalFile
具有不同的参数,如下图所示。图1。三个api的javadocs截图
copyToLocalFile
apache hadoop r2.7.3版图1。三个api的javadocs截图
copyToLocalFile
apache hadoop版本r3.1.1的与此同时,其他java程序员也遇到了这个问题
copyToLocalFile NullPointerException
(似乎和你的错误一样)使用时copyToLocalFile(Path src, Path dst)
,并通过切换到其他两个api来修复它copyToLocalFile(boolean delSrc, Path src, Path dst)
以及copyToLocalFile(boolean delSrc, Path src, Path dst, boolean useRawLocalFileSystem)
.所以我想你可以试试
hadoop.fs.FileSystem.copyToLocalFile(False, '/test/test_merge.txt','/tmp/')
或者hadoop.fs.FileSystem.copyToLocalFile(False, '/test/test_merge.txt','/tmp/', true)
而不是你现在用的。希望有帮助。
oprakyz72#
在azurehdinsight jupyter笔记本中,您可以使用以下url模式访问数据湖存储帐户中的数据。
或
有关更多详细信息,请参阅“将hdinsight spark群集与data lake storage gen1一起使用”。
在内置hadoop中,您可以参考“从pyspark与hdfs交互”和“使用jupyter笔记本和pandas with azure data lake store”。
希望这有帮助。