【发布时间】:2016-08-22 00:08:07
【问题描述】:
我是 spark 的新手,我正在尝试使用 java 加载 avro 数据来触发“数据集”(spark 1.6)。我在 scala 中看到了一些示例,但在 java 中没有。 任何指向 java 中示例的指针都会有所帮助。我尝试创建一个 javaRDD,然后将其转换为“数据集”。我相信必须有一条直截了当的方法。
【问题讨论】:
-
其实我也遇到过这个问题,想不通。不知道您是如何创建 RDD 的,但我在不知道架构的情况下从 Kafka 接收它们。因此,要创建 DataSet,我必须更改发送数据的格式:而不是 avro 序列化数据,而是 json-string。之后我简单地使用了:
session.read().json(JavaRDD);。或者,如果您仍想使用 avro,那么我认为方法是将其放入 avro 文件和session.read().format("avro").load("avrofile.avro");(虽然不确定格式字符串值)。仍然希望有一些简单的方法,所以将问题添加到收藏夹。 -
但也许你会在这里找到适合你的例子spark.apache.org/docs/latest/sql-programming-guide.html。只需选择 Java 选项卡。
-
我能够使用 Dataset
df = spark.read().format("com.databricks.spark.avro") .load("users.avro") 读取 avro 数据其中 users.avro 是数据文件,而 User.avsc 是我使用的架构。但我无法将 Dataset
转换为 Dataset
。我试过 Encoder UserEncoder = Encoders.bean(User.class); /*(User.class 是 avro 生成的类) */ Dataset df = spark.read().format("com.databricks.spark.avro") .load("users.avro").as(用户编码器);
标签: apache-spark apache-spark-dataset spark-avro