【问题标题】:Hadoop API to download files using pysparkHadoop API 使用 pyspark 下载文件
【发布时间】:2019-11-04 19:47:58
【问题描述】:

我正在尝试下载 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: org.apache.hadoop.fs.FileSystem.copyToLocalFile 在 JVM 中不存在

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

【问题讨论】:

  • 嗨@Harish,你到底在哪里运行这段代码?您能否提供更多详细信息以及错误消息的屏幕截图?
  • 火花,jupyter 笔记本
  • 为什么使用 Spark? Azure Datalake 没有 Python 库吗?
  • @cricket_007 使用 API 我们可以确保所有系统资源并且更快。具有Service原理的Python库——我暂时实现了
  • 除非 ADL 下载可以并行化,否则您正在对一个地址进行阻塞调用。我看不出启动 JVM 或使用 Spark 会如何改善这一点

标签: azure hadoop pyspark azure-data-lake


【解决方案1】:

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

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,然后我发现有三个类型函数 copyToLocalFile 不同的参数,如下图。

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

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

同时,其他Java程序员在使用copyToLocalFile(Path src, Path dst)时遇到了问题copyToLocalFile NullPointerException(这似乎与您的错误相同),并通过切换到其他两个APIcopyToLocalFile(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) 来代替您当前使用的。

希望对你有帮助。

【讨论】:

    【解决方案2】:

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

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

    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”。

    希望这会有所帮助。

    【讨论】:

    • “将 HDInsight spark 群集与 Data Lake Storage Gen1 一起使用”。没有下载信息。我不能使用 pandas,因为我有 GB 的数据
    猜你喜欢
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 2023-01-02
    • 2014-07-22
    • 2015-02-06
    • 2016-04-03
    • 1970-01-01
    相关资源
    最近更新 更多