Использование библиотеки spark 3.4.1 в Java при расширении StringRegexExpression до класса JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Использование библиотеки spark 3.4.1 в Java при расширении StringRegexExpression до класса Java

Сообщение Anonymous »

Я использую искру 3.4.1 в проекте maven, где также настроен язык scala (2.13.8). Я пытаюсь создать класс Like.java в проекте, расширив StringRegexExpression искры
package com.practice;

import org.apache.spark.sql.catalyst.expressions.Expression;
import org.apache.spark.sql.catalyst.expressions.Lag;
import org.apache.spark.sql.catalyst.expressions.Like;
import org.apache.spark.sql.catalyst.expressions.StringRegexExpression;
import org.apache.spark.sql.catalyst.expressions.codegen.CodegenContext;
import org.apache.spark.sql.catalyst.expressions.codegen.ExprCode;
import scala.collection.immutable.IndexedSeq;
import scala.collection.immutable.Seq;

import java.util.regex.Pattern;

public class Like extends StringRegexExpression {

private Expression left;
private Expression right;

public CustomLikeExpression(Expression left, Expression right) {

}

@Override
public Seq inputTypes() {
return scala.jdk.javaapi.CollectionConverters.asScala(
java.util.Arrays.asList(
org.apache.spark.sql.types.StringType$.MODULE$,
org.apache.spark.sql.types.StringType$.MODULE$)).toSeq();
}

@Override
public ExprCode doGenCode(CodegenContext ctx, ExprCode ev) {
return null;
}

@Override
public String escape(String v) {
return null;
}

@Override
public boolean matches(Pattern regex, String str) {
return false;
}

@Override
public Expression left() {
return left;
}

@Override
public Expression right() {
return right;
}

@Override
public Expression withNewChildrenInternal(Expression newLeft, Expression newRight) {
return new Like(newLeft, newRight);
}

@Override
public boolean canEqual(Object that) {
return false;
}

@Override
public int productArity() {
return 0;
}

@Override
public Object productElement(int n) {
return null;
}
}

когда я пытаюсь скомпилировать его, я получаю следующую ошибку:

[ОШИБКА] maven_spark/src/main/ java/com/practice/CustomLikeExpression.java:[14,8] com.practice.CustomLikeExpression не является абстрактным и не переопределяет абстрактный метод с помощью NewChildrenInternal(scala.collection.immutable.IndexedSeq) в org.apache.spark.sql.catalyst.trees.TreeNode

Проблема в том, что я не могу переопределить этот конкретный метод с помощью NewChildrenInternal (scala.collection.immutable.IndexedSeq) в моем классе Java, поскольку этот метод в TreeNode определен с ключевым словом protected как
protected def withNewChildrenInternal(newChildren: IndexedSeq[BaseType]): BaseType

И эта реализация предоставляется в BinaryLike, не делая ее защищенной и финальной, как
override final def withNewChildrenInternal(newChildren: IndexedSeq[T]): T = {
assert(newChildren.size == 2, "Incorrect number of children")
withNewChildrenInternal(newChildren(0), newChildren(1))
}

поскольку этот метод стал окончательным в BinaryLike, я не могу его переопределить в своем Java-файле.
как решить эту проблему?мой pom.xml:

4.0.0

com.example
maven_spark
1.0-SNAPSHOT


2.13.8
3.4.1
1.8
1.8
4.9.2




scala-tools.org
Scala-Tools Maven2 Repository
https://repo1.maven.org/maven2/






org.scala-lang
scala-library
${scala.version}




org.apache.spark
spark-core_2.13
${spark.version}




org.apache.spark
spark-sql_2.13
${spark.version}


com.sparkjava
spark-core
2.9.4







net.alchim31.maven
scala-maven-plugin
4.9.2



compile
testCompile







org.apache.maven.plugins
maven-compiler-plugin
3.8.1

${maven.compiler.source}
${maven.compiler.target}




org.scala-tools
maven-scala-plugin
2.15.2



compile

compile

compile


test-compile

testCompile

test-compile


process-resources

compile









Подробнее здесь: https://stackoverflow.com/questions/787 ... a-java-cla

Вернуться в «JAVA»