Hadoop API使用pyspark下载文件

我正在尝试下载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子进程。

xsa591017 回答:Hadoop API使用pyspark下载文件

在Azure HDInsight jupyter笔记本中,您可以使用以下URL模式访问Data Lake Storage帐户中的数据。

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

OR

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

有关更多详细信息,请参阅“ use an HDInsight spark cluster with Data lake Storage Gen1”。

在内部部署Hadoop中,可以引用“ Interacting with HDFS from pyspark”和“ Using Jupyter notebooks and pandas with Azure Data Lake Store”。

希望这会有所帮助。

,

如下图所示,我在官方文档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。

我查看了API org.apache.hadoop.fs.FileSystem.copyToLocalFile的Apache Hadoop的javadocs,然后发现有三个具有不同参数的类型函数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 dst,boolean useRawLocalFileSystem)

因此,我认为您可以尝试使用hadoop.fs.FileSystem.copyToLocalFile(False,'/test/test_merge.txt','/tmp/')hadoop.fs.FileSystem.copyToLocalFile(False,'/tmp/',true)代替当前使用的版本。

希望有帮助。

本文链接:https://www.f2er.com/3164111.html

大家都在问