【问题标题】:py4j.protocol.Py4JJavaError: Class org.apache.hadoop.fs.azure.NativeAzureFileSystem not foundpy4j.protocol.Py4JJavaError:找不到类 org.apache.hadoop.fs.azure.NativeAzureFileSystem
【发布时间】:2021-08-15 17:10:03
【问题描述】:

我正在尝试从 pyspark 中读取 csv 文件,但读取时正在抛出

py4j.protocol.Py4JJavaError: 一个错误 调用 o30.csv 时发生。 :java.lang.RuntimeException: java.lang.ClassNotFoundException:类 org.apache.hadoop.fs.azure.NativeAzureFileSystem 未在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2595) 在 org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:3269) 在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3301) 在 org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:124) 在 org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3352) 在 org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3320) 在 org.apache.hadoop.fs.FileSystem.get(FileSystem.java:479) 在 org.apache.hadoop.fs.Path.getFileSystem(Path.java:361) 在 org.apache.spark.sql.execution.streaming.FileStreamSink$.hasMetadata(FileStreamSink.scala:46) 在 org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:376) 在 org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:326) 在 org.apache.spark.sql.DataFrameReader.$anonfun$load$3(DataFrameReader.scala:308) 在 scala.Option.getOrElse(Option.scala:189) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:308) 在 org.apache.spark.sql.DataFrameReader.csv(DataFrameReader.scala:796) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) 在 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) 在 py4j.Gateway.invoke(Gateway.java:282) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j.GatewayConnection.run(GatewayConnection.java:238) 在 java.lang.Thread.run(Thread.java:748) 原因: java.lang.ClassNotFoundException:类 org.apache.hadoop.fs.azure.NativeAzureFileSystem 未在 org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2499) 在 org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2593) ... 25 更多

进程以退出代码 1 结束

错误,谁能建议我在下面的代码中哪里做错了。

from pyspark.sql import SparkSession

SECRET_ACCESS_KEY = "XXXXXXXXXXX"
STORAGE_NAME = "azuresvkstorageaccount11123"
CONTAINER = "inputstorage1"
FILE_NAME = "movies.csv"


spark = SparkSession.builder.appName("Azure_PySpark_Connectivity")\
                    .master("local[*]")\
                    .getOrCreate()

fs_acc_key = "fs.azure.account.key." + STORAGE_NAME + ".blob.core.windows.net"
spark.conf.set("spark.hadoop.fs.wasb.impl", "org.apache.hadoop.fs.azure.NativeAzureFileSystem")
spark.conf.set("fs.azure", "org.apache.hadoop.fs.azure.NativeAzureFileSystem")
spark.conf.set(fs_acc_key, SECRET_ACCESS_KEY)

file_path = "wasb://inputstorage1@azuresvkstorageaccount.blob.core.windows.net/movies.csv"
print(file_path)

Df = spark.read.csv(path=file_path,header=True,inferSchema=True) #Error Coming from this line it is unable to read the csv file

#Df.show(20,True)

【问题讨论】:

    标签: apache-spark pyspark azure-blob-storage


    【解决方案1】:

    我已经找到问题了,它来自maven jars,解决方案是

    1. 从 maven 门户手动下载 hadoop-azure 和 azure-storage jar 并将这些 jar 复制到 spark/jars/。文件夹。
    2. 对 jetty-utils jar 执行相同操作,将此 jar 添加到 spark/jars/。文件夹
    3. 然后刷新并再次运行脚本,完美运行。

    【讨论】:

      猜你喜欢
      • 2022-08-24
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多