Кадр данных SPARK возвращает ноль при попытке применить схему к данным JSONJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Кадр данных SPARK возвращает ноль при попытке применить схему к данным JSON

Сообщение Anonymous »

Я использую API SPARK Java для чтения текстового файла, преобразования его в JSON и последующего применения к нему схемы. Схема может варьироваться в зависимости от таблицы сопоставления в базе данных, поэтому мне нужно сначала преобразовать файл в JSON, чтобы сопоставление схемы не обязательно было в порядке столбцов. Вот что я сделал:

Код: Выделить всё

// Defined the schema (basic representation)
StructType myschema = new StructType().add("a", DataTypes.StringType, true)
.add("b", DataTypes.StringType, true)
.add("x", DataTypes.StringType, true)
.add("y", DataTypes.IntegerType, true)
.add("z", DataTypes.BooleanType, true);

//Reading a pipe delimited text file as JSON, the file has less columns than myschema
Dataset data = spark.read().option("delimiter","|").option("header","true").csv(myFile).toJSON();
Приведенная выше таблица возвращает примерно следующее:

Код: Выделить всё

data.show(false);

|value|
+----------------------------------------+
|      {"x":"name1","z":"true","y":"1234"}|
|      {"x":"name2","z":"false","y":"1445"}|
|      {"x":"name3","z":"true",:y":"1212"}|
Моя проблема возникает, когда я запускаю это:

Код: Выделить всё

Dataset data_with_schema = spark.read().schema(myschema).json(data);
Потому что мой результат превращается в это:

Код: Выделить всё

data_with_schema.show(false);
|x|y|z|
+-------+-------+-------+
|null  |null  |null  |
|null  |null  |null  |
|null  |null  |null  |
Я прочитал на stackoverflow, что это может быть связано с тем, что я пытаюсь преобразовать строки json в целые числа. Однако я попытался определить переменную данных как набор данных строк вместо набора строковых данных, но возникла ошибка несовместимых типов. Я не уверен, каков обходной путь или в чем реальная проблема.

Подробнее здесь: https://stackoverflow.com/questions/583 ... -json-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»