Разработка Encoder JSON to RowВам нужно будет написать функции, которые позволяют работать с InternalRow. Они позволяют конвертировать в общепринятые форматы, в частности JSON в представлении InternalRow для того, чтобы в дальнейшем использовать это в остальных трех лабах.
ЦЕЛИ- Создать проект hybrid-json-datasource
- Разработать вспомогательные классы для работы с данными в следующих лабораторных
ЗАДАЧИorg.apache.spark.sql.hybrid.JsonParserВам необходимо разработать класс для конвертации JSON строк в InternalRow package org.apache.spark.sql.hybrid import org.apache.spark.sql.catalyst.InternalRow import org.apache.spark.sql.types.StructType class JsonParser(schema: StructType) { def toRow(input: Iterator[String]): Iterator[InternalRow] = { ??? } }
- schema - схема JSON документа
- input - итератор JSON документов. Каждая срока - это отдельный JSON документ вида {"foo": 0, "bar": "hello world"}
org.apache.spark.sql.hybrid.RowConverter Вам необходимо разработать класс для конвертации InternalRow в JSON строки
package org.apache.spark.sql.hybrid import org.apache.spark.sql.catalyst.InternalRow class RowConverter(dataType: StructType) { def toJsonString(input: Iterator[InternalRow]): Iterator[String] = { ??? } }
- schema - схема InternalRow
- input - итератор InternalRow. На выходе должен получится Iterator[String], содержащий JSON строки вида {"foo": 0, "bar": "hello world"}. Каждая InternalRow превращается в одну JSON строку