簡體   English   中英

從kafka主題中讀取數據並使用spark tempview進行匯總?

[英]read a data from kafka topic and aggregate using spark tempview?

我想從kafka主題中讀取數據,並創建spark tempview以按某些列分組?

+----+--------------------+
| key|               value|          
+----+--------------------+
|null|{"e":"trade","E":...|
|null|{"e":"trade","E":...|
|null|{"e":"trade","E":...|

但我無法從tempview聚合數據? 值列數據存儲為字符串???

Dataset<Row> data = spark
                  .readStream()
                  .format("kafka")
                  .option("kafka.bootstrap.servers", "localhost:9092,localhost:9093")
                  .option("subscribe", "data2-topic")
                  .option("startingOffsets", "latest")
                  .option ("group.id", "test")
                  .option("enable.auto.commit", "true")
                  .option("auto.commit.interval.ms", "1000")          
                  .load();
          data.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)");
          data.createOrReplaceTempView("Tempdata");
          data.show();
Dataset<Row> df2=spark.sql("SELECT e FROM Tempdata group by e");
df2.show();

值列數據存儲為字符串???

是的。因為您的CAST(value as STRING)

您將需要使用from_json函數,該函數會將行加載到可以在其中搜索的適當數據from_json

有關一些示例,請參見Databrick的關於Kafka上的結構化流的博客。

如果主要目標只是對某些字段進行分組,則可以選擇KSQL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM