Как читать паркет с помощью Spark с неподдерживаемыми типами? - PullRequest
2 голосов
/ 20 апреля 2020

Я хотел бы использовать PySpark для извлечения данных из файла паркета, который содержит UINT64 столбцы, которые в настоящее время отображаются на typeNotSupported() в Spark . Мне не нужны эти столбцы, поэтому я надеялся, что смогу вытащить другие столбцы с помощью предиката pushdown с помощью следующей команды:

spark.read.parquet('path/to/dir/').select('legalcol1', 'legalcol2')

Однако я все еще встречался со следующей ошибкой.

An error was encountered:
An error occurred while calling o86.parquet.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, 
most recent failure: Lost task 0.3 in stage 0.0 (TID 3, ..., executor 1):
org.apache.spark.sql.AnalysisException: Parquet type not supported: INT64 (UINT_64);

Есть ли способ получить эти данные, не выдавая вышеуказанную ошибку?

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете попытаться преобразовать любой тип столбца в другой тип столбца:

val df = spark.read.parquet('path/to/dir/')

df.select(col('legalcol1').cast('string').alias('col1'), col('legalcol2').cast('string').alias('col2'))

Преобразовать в тип столбца bigint:

df.select(col('uint64col').cast('bigint').alias('bigint_col'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...