Tôi đang sử dụng Spark 2.2 và tôi đang cố gắng để đọc các thông điệp JSON từ Kafka, biến đổi họ DataFrame
và có chúng như là một :jsontostructs để Row trong spark cấu trúc trực tuyến
spark
.readStream()
.format("kafka")
.option("kafka.bootstrap.servers", "localhost:9092")
.option("subscribe", "topic")
.load()
.select(col("value").cast(StringType).as("col"))
.writeStream()
.format("console")
.start();
với I này có thể đạt được:
+--------------------+
| col|
+--------------------+
|{"myField":"somet...|
+--------------------+
tôi muốn một cái gì đó như thế này:
+--------------------+
| myField|
+--------------------+
|"something" |
+--------------------+
Tôi cố gắng để sử dụng from_json
chức năng sử dụng struct
:
DataTypes.createStructType(
new StructField[] {
DataTypes.createStructField("myField", DataTypes.StringType)
}
)
nhưng tôi chỉ nhận được:
+--------------------+
| jsontostructs(col)|
+--------------------+
|[something] |
+--------------------+
sau đó tôi cố gắng sử dụng explode
nhưng tôi chỉ có ngoại lệ nói:
cannot resolve 'explode(`col`)' due to data type mismatch:
input to function explode should be array or map type, not
StructType(StructField(...
Bất kỳ ý tưởng làm thế nào để thực hiện công việc này?