Паркетная схема для изменений типа карты после Spark2 на 3 миграцииJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Паркетная схема для изменений типа карты после Spark2 на 3 миграции

Сообщение Anonymous »

Мы мигрируем с Spark 2 на 3 в наших рабочих процессах, и одна проблема, которую, как мы замечаем, заключается в том, что паркетные файлы имеют несоответствие схемы для Maptype. Вот простой пример, чтобы проиллюстрировать случай < /p>
SparkSession sparkSession = SparkSession
.builder()
.master("local[*]")
.config("spark.sql.parquet.writeLegacyFormat", true)
.getOrCreate();

//Create struct
StructType schema = DataTypes.createStructType(new StructField[]{
DataTypes.createStructField("id", DataTypes.IntegerType, true),
DataTypes.createStructField("my_map_data", DataTypes.createMapType(DataTypes.StringType, DataTypes.StringType, Boolean.TRUE), true)
});

//Create sample data
List listRows = new ArrayList();
listRows.add(RowFactory.create(1, new HashMap() {{
put("key", "value");
}}));

//Create dataset
Dataset dataset = sparkSession.createDataFrame(listRows, schema);

//Write to parquet
dataset
.write()
.mode(SaveMode.Overwrite)
.parquet("spark_all_legacy_write_enabled");
< /code>
Мы запускаем вышеуказанный код с Spark 2.4, а затем в 3.5. Схема для типа карты в Spark 2.4 - < /p>
############ Column(key) ############
name: key
path: my_map_data.map.key

############ Column(value) ############
name: value
path: my_map_data.map.value
< /code>
Но в 3.5, это < /p>
############ Column(key) ############
name: key
path: my_map_data.key_value.key

############ Column(value) ############
name: value
path: my_map_data.key_value.value
< /code>
В Spark 2.4 схема имеет «карту», ​​но в 3.5 схема имеет "key_value". Это заставляет нашу схему несоответствие. Есть ли способ, которым мы можем решить это? Я не могу найти какую -либо помощь в этом < /p>
Редактировать: схема для обеих версий Spark - это то же самое < /p>
root
|-- id: integer (nullable = true)
|-- my_map_data: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)


Подробнее здесь: https://stackoverflow.com/questions/796 ... -migration
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Паркетная схема для изменений типа карты после Spark2 на 3 миграции
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Паркетная схема для изменений типа карты после Spark2 на 3 миграции
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Паркетная схема для изменений типа карты после Spark2 на 3 миграции
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Невозможно загрузить транзакционную таблицу Hive в фрейм данных с помощью Spark2.
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Невозможно загрузить транзакционную таблицу Hive в фрейм данных с помощью Spark2.
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

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