【发布时间】: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