[英]read a data from kafka topic and aggregate using spark tempview?
[英]Read Data from kafka topic into spark dataframe
private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(sparkSqlMysql.class);
private static final SparkSession sparkSession = SparkSession.builder().master("local[*]").appName("Spark2JdbcDs")
.getOrCreate();
public static void main(String[] args) {
// JDBC connection properties
// Load MySQL query result as Dataset
Dataset<Row> df = sparkSession.readStream().format("kafka").option("kafka.bootstrap.servers", "localhost:9092")
.option("subscribe", "SqlMessages").load();
我想做一些事情,我可以從我的 kafka 主題中讀取我的 spark SQL 的數據,但不能這樣做。
有人可以指導我可以將我的數據從 kafka 主題轉換為 spark SQL 嗎?
我可以做到這一點的東西
Dataset<Row> schoolData = sparkSession.sql("select * from Schools");
今天也在做類似的事情。 從頭開始消耗整個主題,轉換為 DataFrame 並保存為 Parquet 表。 您可以從 Scala 改編我的代碼,思路應該很清楚。
val topic = "topic_bla_bla"
val brokers = "some_kafka_broker:9092"
val kafkaDF = spark.read.format("kafka").option("kafkaConsumer.pollTimeoutMs", "20000").option("startingOffsets", "earliest").option("kafka.bootstrap.servers", brokers).option("subscribe", topic).load()
val jsonDF = kafkaDF.selectExpr("CAST(value AS STRING)")
val finalDF = spark.read.option("mode", "PERMISSIVE").json(jsonDF.as[String])
finalDF.registerTempTable("wow_table")
//OR
finalDF.write.format("parquet").saveAsTable("default.wow_table")
spark.sql("select * from wow_table")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.