hadoopapi使用pyspark下载文件

crcmnpdw  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(677)

我正在尝试下载一个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子进程,但现在不想使用。

olqngx59

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) 而不是你现在用的。
希望有帮助。

oprakyz7

oprakyz72#

在azurehdinsight jupyter笔记本中,您可以使用以下url模式访问数据湖存储帐户中的数据。

adl://<data_lake_store_name>.azuredatalakestore.net/<cluster_root>/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv

adl:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv

有关更多详细信息,请参阅“将hdinsight spark群集与data lake storage gen1一起使用”。
在内置hadoop中,您可以参考“从pyspark与hdfs交互”和“使用jupyter笔记本和pandas with azure data lake store”。
希望这有帮助。

相关问题