Apache spark 我如何阅读火花拼花地板有不支持的类型?

Apache spark 我如何阅读火花拼花地板有不支持的类型?,apache-spark,pyspark,Apache Spark,Pyspark,我想使用PySpark从包含UINT64列的拼花地板文件中提取数据,该列当前映射到中的typeNotSupported()。我不需要这些列,所以我希望可以使用谓词下推,使用以下命令来拉取其他列: spark.read.parquet('path/to/dir/').select('legalcol1', 'legalcol2') 然而,我仍然遇到了以下错误 An error was encountered: An error occurred while calling o86.parquet

我想使用PySpark从包含
UINT64
列的拼花地板文件中提取数据,该列当前映射到中的
typeNotSupported()。我不需要这些列,所以我希望可以使用谓词下推,使用以下命令来拉取其他列:

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);

有没有办法在不引发上述错误的情况下接收此数据?

您可以尝试将任何列类型转换为另一列类型:

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

df.select(col('legalcol1').cast('string').alias('col1'), col('legalcol2').cast('string').alias('col2'))
df.select(col('uint64col').cast('bigint').alias('bigint_col'))
转换为bigint列类型:

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

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

您正在使用哪个版本的spark?我正在使用版本2.4.3AFAIK和spark,这是不可能的。可能您必须使用拼花工具进行这些转换?这不是问题的答案。您可以对该问题进行任何调整,并按照上面的示例进行适当的类型转换。@jo0gbe4bstjb这不是答案,因为对于
read
的like会引发异常。