Spring Cloud Dataflow - http | кафка и кафка | hdfs - получение необработанного сообщения в HDFS - PullRequest
0 голосов
/ 12 марта 2019

Я создаю основной поток в SCDF (локальный сервер 1.7.3), в котором я настраиваю 2 потока.1. HTTP -> Тема Kafka 2. Тема Kafka -> HDFS

Потоки:

stream create --name ingest_from_http --definition "http --port=8000 --path-pattern=/test > :streamtest1"
stream deploy --name ingest_from_http --properties "app.http.spring.cloud.stream.bindings.output.producer.headerMode=raw"

stream create --name ingest_to_hdfs --definition ":streamtest1 > hdfs --fs-uri=hdfs://<host>:8020 --directory=/tmp/hive/sensedev/streamdemo/ --file-extension=xml --spring.cloud.stream.bindings.input.consumer.headerMode=raw" 

Я создал управляемую таблицу Hive для местоположения / tmp / hive/ sensedev / streamdemo /

DROP TABLE IF EXISTS gwdemo.xml_test;
CREATE TABLE gwdemo.xml_test(

id int,

name string

 )

ROW FORMAT SERDE 'com.ibm.spss.hive.serde2.xml.XmlSerDe'

WITH SERDEPROPERTIES (

"column.xpath.id"="/body/id/text()",

"column.xpath.name"="/body/name/text()"


)

STORED AS

INPUTFORMAT 'com.ibm.spss.hive.serde2.xml.XmlInputFormat'

OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'

LOCATION '/tmp/hive/sensedev/streamdemo'

TBLPROPERTIES (

"xmlinput.start"="<body>",

"xmlinput.end"="</body>")

;

Тестирование:

  1. Может ли Hive читать XML: поместите файл XML в папку / tmp / hive/sensedev/streamdemo.

Содержимое файла: <body><id>1</id><name>Test1</name></body>

При выполнении команды SELECT для таблицы она правильно показала вышеуказанную запись.

При публикации записи в SCDF с помощью http post я получаю правильные данные в Kafka Consumer, но при проверке HDFS создаются файлы xml, но я получаю необработанные сообщения в этих файлах.Пример:

dataflow> http post --target http: /// test --data "<body><id>2</id><name>Test2</name></body>" --contentType application / xml

В консоли KafkaПотребитель, я могу прочитать правильное XML-сообщение: <body><id>2</id><name>Test2</name></body>

 $ hdfs dfs -cat /tmp/hive/sensedev/streamdemo/hdfs-sink-2.xml
[B@31d94539

Вопросы: 1. Чего мне не хватает?Как я могу получить правильные записи XML во вновь созданных файлах XML в HDFS?

1 Ответ

0 голосов
/ 21 марта 2019

HDFS Sink ожидает сериализованный объект Java.

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