Прикладная схема на тему кафки JSON дает все пустые поля - PullRequest
0 голосов
/ 01 ноября 2018

Я использую набор инструментов hortonworks и пытаюсь проанализировать данные json, поступающие из темы kafka, в фрейм данных. Однако, когда я запрашиваю таблицу в памяти, схема фрейма данных кажется правильной, но все значения равны нулю, и я не знаю, почему.

Данные json, входящие в тему kafka, выглядят так:

{"index":"0","Conrad":"Persevering system-worthy intranet","address":"8905 Robert Prairie\nJoefort, LA 41089","bs":"envisioneer web-enabled mindshare","city":"Davidland","date_time":"1977-06-26 06:12:48","email":"eric56@parker-robinson.com","paragraph":"Kristine Nash","randomdata":"Growth special factor bit only. Thing agent follow moment seat. Nothing agree that up view write include.","state":"1030.0"}

Код в моей записной книжке Zeppelin таков:

%dep 
z.load("org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.1")

%pyspark

#Defining my schema

from pyspark.sql.types import StructType , StringType , LongType , IntegerType

schema = StructType().add("index", IntegerType()).add("Conrad", StringType()).add("address",StringType()).add("bs",StringType()).add("city",StringType()).add("date_time",LongType()).add("email",StringType()).add("name",StringType()).add("paragraph",StringType()).add("randomdata",IntegerType()).add("state",StringType())

# Read data from kafka topic

lines = spark.readStream.format("kafka").option("kafka.bootstrap.servers","x.x.x.x:2181").option("startingOffsets", "latest").option("subscribe","testdata").load().select(from_json(col("value").cast("string"), schema).alias("parsed_value"))

# Start the stream and query the in-memory table
query=lines.writeStream.format("memory").queryName("t10").start()
raw= spark.sql("select parsed_value.* from t10")

В настоящее время я явно определяю схему, но моя конечная цель - получить схему avro из Реестра схем Hortonworks . Было бы хорошо, если бы кто-то мог показать мне, как это сделать.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...