#hadoop #hive #apache-kafka #hdfs #spring-cloud-dataflow
#hadoop #улей #apache-kafka #hdfs #весенний облачный поток данных
Вопрос:
Я создаю базовый поток в 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, в location / 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>")
;
Тестирование:
- Может ли Hive читать XML: поместите XML-файл в папку /tmp /hive / sensedev /streamdemo.
Содержимое файла: <body><id>1</id><name>Test1</name></body>
При выполнении команды SELECT в таблице вышеупомянутая запись отображалась должным образом.
-
При публикации записи в SCDF с помощью http post я получаю правильные данные в Kafka Consumer, но когда я проверяю HDFS, создаются XML-файлы, но я получаю необработанные сообщения в этих файлах. Пример:
поток данных> 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:
Приемник HDFS ожидает сериализованный объект Java.