スパーク2.4.0アブロJavaは - メソッドのfrom_avroを解決することはできません

マチェイC:

私はカフカキューアブロメッセージを含むからスパークストリームを実行しようとしています。

あたりとしてhttps://spark.apache.org/docs/latest/sql-data-sources-avro.html私は使用することができるはずfrom_avroの列の値を変換しますDataset<Row>

しかし、私はそれが文句としてプロジェクトをコンパイルすることができないんですfrom_avroが見つかりません。私は、依存関係のpackage.classで宣言されたメソッドを参照してくださいすることができます。

どのようにして使用することができますfrom_avroから、メソッドをorg.apache.spark.sql.avroローカルに私のJavaコードで?

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;

import static org.apache.spark.sql.functions.*;
import org.apache.spark.sql.avro.*;


public class AvroStreamTest {
    public static void main(String[] args) throws IOException, InterruptedException {

     // Creating local sparkSession here...

        Dataset<Row> df = sparkSession
                .readStream()
                .format("kafka")
                .option("kafka.bootstrap.servers", "host:port")
                .option("subscribe", "avro_queue")
                .load();

        // Cannot resolve method 'from_avro'...
        df.select(from_avro(col("value"), jsonFormatSchema)).writeStream().format("console")
                .outputMode("update")
                .start();


    }
}

pom.xml:

<dependencies>
    <dependency> 
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-avro_2.11</artifactId>
        <version>2.4.0</version>
    </dependency>
  <!-- more dependencies below -->

</dependencies>

Javaはから名前をインポートすることができないように思えます sql.avro.package.class

ollik1:

これは、としてそれをインポートし、ため生成されたクラス名のだimport org.apache.spark.sql.avro.package$;と、その後使用してpackage$.MODULE$.from_avro(...)動作するはずです

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=180200&siteId=1