azure - Hadoop API使用pyspark下载文件

标签 azure hadoop pyspark azure-data-lake

我正在尝试下载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://abcaccount.azuredatalakestore.net'), conf) hadoop.fs.FileSystem.copyToLocalFile('/test/test_merge.txt','/tmp/')
错误:
Py4JError:JVM中不存在org.apache.hadoop.fs.FileSystem.copyToLocalFile

注意:我尝试了我现在不想使用的python子进程。

最佳答案

我在官方文档 What are the Apache Hadoop components and versions available with HDInsight? 中检查了Hadoop版本的Azure HDInsight的不同版本,如下图所示。

enter image description here

HDInsight 3.5、3.6和4.0使用Apache Hadoop版本2.7.3和3.1.1。

我查看了Apache Hadoop的javadocs中的API org.apache.hadoop.fs.FileSystem.copyToLocalFile API,然后发现存在三种具有不同参数的类型函数copyToLocalFile,如下图所示。

图1. Apache Hadoop版本r2.7.3的三个API copyToLocalFile的javadocs的屏幕截图

enter image description here

图1. Apache Hadoop版本r3.1.1的三个API copyToLocalFile的javadocs的屏幕截图

enter image description here

同时,其他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)代替当前使用的。

希望能帮助到你。

关于azure - Hadoop API使用pyspark下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58700127/

相关文章:

hadoop - 如何在不重启Hadoop服务的情况下重置 “Reserved Space for Replicas”

python - 通过在空白处拆分值来创建新的 pyspark 数据框列

python - Spark Python - 如何使用按键归约来获取最小值/最大值

python - 如何使用Azure定时器功能来运行python脚本?

Azure SQL 数据库 Bacpac 本地还原

Hadoop MapReduce - Pig/Cassandra - 无法创建输入拆分

hadoop - Apache Spark 无法在 Windows 上运行

python-3.x - Pyspark UDF 属性错误 : 'NoneType' object has no attribute '_jvm'

c# - Azure 上的 System.Net.Http.Formatting.dll 中发生 System.AccessViolationException'

Azure服务总线: Receive all the message from one session id of a queue