我正在读取数据集和printing schema。有效。
当我尝试找到dataset count时,出现ClassCastException
作为
java.lang.ClassCastException: org.apache.hadoop.fs.FsUrlConnection cannot be cast to java.net.HttpURLConnection
虽然相同的代码在Mac OS上也可以使用。 运行Linux_4.14.48的云虚拟机中抛出了异常
请让我知道是否有修复程序。有关于此修复程序的主题讨论 在Hadoop-14598中使用,但该版本适用于旧版本,我认为Spark 2.3.2可能已经具有该补丁。
虽然没有很多代码行,但是将其粘贴到下面。调用df.count()时发生错误
val df = spark.read.format("own.format.dataset").load(sys.env("DATASET_ID"))
val count = df.count()
答案 0 :(得分:1)
我只是为这个确切的问题而苦恼。我能够通过覆盖sinon.stub(Auth0Service.prototype, "signIn").resolves({
success: false,
accessToken: "test",
errorMessage: "aaa",
statusCode: 404,
} as SignInResultModel);
done();
版本(hadoop-client
使用spark-core
2.6.5)来修复它。我在hadoop-client
中添加了以下内容:
build.sbt
答案 1 :(得分:0)
将Spark版本更新为2.3.0后,此问题已解决,建议使用更高版本来解决此问题
答案 2 :(得分:0)
该问题与 hadoop-client 2.7 相关,它与特定的 spark 版本无关,因此按照@marteljn 的建议,您应该提高您的 hadoop 版本。
如果你不能撞到你的 hadoop 客户端,那么你可以使用这个解决方法:
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory(sc.hadoopConfiguration()) {
@Override
public URLStreamHandler createURLStreamHandler(String protocol) {
if (protocol.equals("http") || protocol.equals("https")) {
return null;
}
return super.createURLStreamHandler(protocol);
}
});
的建议
答案 3 :(得分:0)
在 Spark Context 之后使用它。
SparkConf sparkConf = new SparkConf().setMaster("local").setAppName("Application Name");
JavaSparkContext sparkContext = new JavaSparkContext(sparkConf);
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory(sparkContext.hadoopConfiguration()) {
@Override
public URLStreamHandler createURLStreamHandler(String protocol) {
if (protocol.equals("http") || protocol.equals("https")) {
return null;
}
return super.createURLStreamHandler(protocol);
}
});