Кейс про паркеты Предыстория

Мы хотим перекладывать паркет-файлики из одной системы в другую. Выложили их на s3. Все, можно забирать. Казалось бы, что может пойти не так?

Но этот процесс прошел несколько итераций, прежде чем я сказала "все ок" 😊 1️⃣ Проблема: Illegal Parquet type: FIXED_LEN_BYTE_ARRAY Смысл: паркет не умеет читать тип FixedString из кх Решение: удаляем столбец или сохраняем в формате String

2️⃣ Проблема: Required field 'codec' was not present! Смысл: связано с несопоставимыми алгоритмами компрессии файлов Решение: используем другой алгоритм (н-р, Snappy)

3️⃣ Проблема: Строковые типы отображаются вот так: [57 65 62 4B 69 74] Смысл: отображается в бинарном виде Решение:

`SELECT unhex(regexp_replace(StartURL, ' ', ''))

(или без unhex)

Но это неудобно все преобразовывать на этапе чтения

4️⃣ Проблема: делаю printSchema() и вижу, что все строковые поля имеют тип binary Решение: сохраняем в string

5️⃣ Проблема: date в формате 20031 Смысл: это количество дней от 1970-01-01 Решение:

`df.withColumn( 'new_date', F.date_from_unix_date(date) )

6️⃣ Проблема: функция date_from_unix_date появилась в версии 3.5.0, а у нас ниже Решение: делаем примерно так и кладем все в string на этапе записи

`SELECT date_add('1970-01-01', 20031) AS new_date

Ура😑```

Кейс про паркеты
Предыстория
Мы хотим перекладывать паркет-файлики из одной системы в другую. Выложили их на s3. Все, можно забирать | Сетка — социальная сеть от hh.ru