Кейс про паркеты Предыстория
Мы хотим перекладывать паркет-файлики из одной системы в другую. Выложили их на 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
Ура😑```