читать данные из темы кафки и агрегировать с помощью spark tempview? - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу прочитать данные из темы Кафки и создать спарк 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();

1 Ответ

0 голосов
/ 05 декабря 2018

значение столбца данных, хранящихся в виде строки ???

Да .. Потому что вы CAST(value as STRING)

Вы захотите использовать функцию from_jsonэто загрузит строку в правильный фрейм данных, в котором вы можете искать.

См. Блог Databrick по Структурированные потоки на Kafka для некоторых примеров

Если основной целью является просто группировка некоторых полей, то KSQL может быть альтернативой.

...