マチェイ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(...)
動作するはずです