gpt4 book ai didi

java - Spark 2.4.0 Avro Java - 无法解析方法 from_avro

转载 作者:搜寻专家 更新时间:2023-10-31 20:08:10 25 4
gpt4 key购买 nike

我正在尝试从包含 Avro 消息的 kafka 队列运行 Spark 流。

根据 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 导入名称

最佳答案

是因为生成类名,导入为 import org.apache.spark.sql.avro.package$; 然后使用 package$.MODULE$.from_avro(. ..) 应该可以工作

关于java - Spark 2.4.0 Avro Java - 无法解析方法 from_avro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55026584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com