Kafka'dan bir veri akışı yüklemek için DataFrame/Dataset API'sine dayalı Spark-Streaming'i kullanarak structured streaming approach'u kullanmaya çalışıyorum.Yapılandırılmış Akış kullanarak Kafka'dan JSON biçiminde kayıtlar nasıl okunur?
kullanmak:
- Kıvılcım 2.10
- Kafka'nın 0.10
- kıvılcım SQL-kafka-0-10
Kıvılcım Kafka'nın DataSource tanımlamıştır altta yatan şema:
|key|value|topic|partition|offset|timestamp|timestampType|
Verilerim json biçiminde gelir ve sütununda saklanırlar. Değer sütunundan temel alınan şemayı ayıklamak ve alınan veri çerçevesini değerinde depolanan sütunlara güncelleştirme yöntemini nasıl araştırıyorum? Aşağıda yaklaşım denedi ama çalışmıyor:
Burada çünkü akışın yaratılış zamanında İstisnaorg.apache.spark.sql.AnalysisException: Can't extract value from value#337;
alıyorum
val columns = Array("column1", "column2") // column names
val rawKafkaDF = sparkSession.sqlContext.readStream
.format("kafka")
.option("kafka.bootstrap.servers","localhost:9092")
.option("subscribe",topic)
.load()
val columnsToSelect = columns.map(x => new Column("value." + x))
val kafkaDF = rawKafkaDF.select(columnsToSelect:_*)
// some analytics using stream dataframe kafkaDF
val query = kafkaDF.writeStream.format("console").start()
query.awaitTermination()
, içeride bilinmeyen değerler ...
Herhangi bir öneriniz var mı ?