org.apache.hadoop.fs.UnsupportedFileSystemException:方案“oci”没有文件系统

Posted

技术标签:

【中文标题】org.apache.hadoop.fs.UnsupportedFileSystemException:方案“oci”没有文件系统【英文标题】:org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "oci" 【发布时间】:2021-12-28 14:33:26 【问题描述】:

当我尝试使用 pySpark 访问存储在 OCI 对象存储中的文件时,如下所示,我遇到了上述错误。

import configparser
from datetime import datetime,timedelta
import os
import io
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
from pyspark.sql.types import *
import sql_queries as sql
import pandas as pd
import oci
from oci.config import validate_config ## To validate configuration
from oci.object_storage import ObjectStorageClient ## To work with object storage

读取 OCI 文件

 spark = SparkSession.builder \
        .config("spark.hadoop.fs.oci.client.hostname", 'https://objectstorage.ap-hyderabad-1.oraclecloud.com')\
        .config("spark.hadoop.fs.oci.client.regionCodeOrId", 'ap-hyderabad-1')\
        .config('spark.hadoop.fs.oci.client.auth.tenantId', 'ocid1.tenancy.oc1..xxxx')\
        .config('spark.hadoop.fs.oci.client.auth.userId', 'ocid1.user.oc1..xxxx')\
        .config('spark.hadoop.fs.oci.client.auth.fingerprint', '01:87:82:6f:4f:c3:af:fd:9c:ce:c4:fd:47:f8:7a:aa') \
        .config('spark.hadoop.fs.oci.client.auth.pemfilepath', '/Users/xxxx/.oci/oci_api_key_private.pem') \
        .config("spark.jars", "/Users/xxxx/oci-hdfs/lib/oci-hdfs-full-2.9.2.1.jar")\
        .getOrCreate()
    
    nycrime_df = spark.read.csv("oci://udacity-cap-bs/NY_Crimes_2016.csv",header=True,inferSchema=True)

【问题讨论】:

错误:21/12/28 19:50:02 WARN FileStreamSink:假设没有元数据目录。在路径中查找元数据目录时出错:oci://udacity-cap-bs/NY_Crimes_2016.csv。 org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "oci" 将相关驱动程序添加到 $SPARK_HOME/jars 后..此错误已解决..但我现在看到以下不同的错误:nycrime_df = spark.read.csv("oci://udacity- cap- bsz@axbnhx1546i6/AB_NYC_2019.csv",header=True,inferSchema=True) 错误:Py4JJavaError:调用 o89.csv 时出错。 : java.lang.NoClassDefFoundError: org/bouncycastle/openssl/EncryptionException 在 com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory.createKeySupplier(DefaultRequestSignerFactory.java:108) 在 com.oracle.bmc.http.signing.internal。 DefaultRequestSignerFactory.createRequestSigner(DefaultRequestSignerFactory.java:53) 嗨 - 请更新您的主要问题以表达您当前面临的问题。现在您的帖子是关于您已解决的问题,而您遇到的不同的当前问题仅在 cmets 中提及 【参考方案1】:

似乎类路径缺少 bouncycastle 的 JAR。请将 oci-hdfs/third-party/lib 下的所有 JAR 与 oci-hdfs-full-*-jar 一起添加到 spark.jars 配置中。示例:

SparkSession.builder.config("spark.jars", "/Users/xxxx/oci-hdfs/lib/oci-hdfs-full-2.9.2.1.jar,/Users/xxxx/oci-hdfs/third-party/bcpkix-jdk15on-1.68.jar,...)

【讨论】:

以上是关于org.apache.hadoop.fs.UnsupportedFileSystemException:方案“oci”没有文件系统的主要内容,如果未能解决你的问题,请参考以下文章