sql - 更改 Parquet 文件中的列数据类型

标签 sql amazon-web-services amazon-s3 hive external-tables

我有一个指向 s3 位置(parquet 文件)的外部表,它的所有数据类型都是字符串。我想更正所有列的数据类型,而不是将所有内容都作为字符串读取。当我删除外部表并使用新数据类型重新创建时,选择查询总是抛出如下所示的错误:

java.lang.UnsupportedOperationException: org.apache.parquet.column.values.dictionary.PlainValuesDictionary$PlainBinaryDictionary
    at org.apache.parquet.column.Dictionary.decodeToInt(Dictionary.java:48)
    at org.apache.spark.sql.execution.vectorized.OnHeapColumnVector.getInt(OnHeapColumnVector.java:233)
    at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.processNext(Unknown Source)
    at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
    at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$8$$anon$1.hasNext(WholeStageCodegenExec.scala:395)
    at org.apache.spark.sql.execution.SparkPlan$$anonfun$2.apply(SparkPlan.scala:234)
    at org.apache.spark.sql.execution.SparkPlan$$anonfun$2.apply(SparkPlan.scala:228)
    at org.apache.spark.rdd.RDD$$anonfun$mapPartitionsInternal$1$$anonfun$apply$25.apply(RDD.scala:827)
    at org.apache.spark.rdd.RDD$$anonfun$mapPartitionsInternal$1$$anonfun$apply$25.apply(RDD.scala:827)

最佳答案

指定类型为 BigInt 等同于 long 类型,hive 没有 long 数据类型。

hive> alter table table change col col bigint;

Duplicate content, from Hortonworks forum

关于sql - 更改 Parquet 文件中的列数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49587501/

相关文章:

mysql - 使用 Sean lahman MLB 数据库了解 mysql 查询性能

amazon-web-services - 如何使用 AWS Lambda 捕获无服务器网站屏幕截图?

python - Boto3获取S3存储桶的内容

python - 当需要本地系统文件时,在 Django/python 中操作和创建 S3 文件

SQL 通过带索引的多列过滤

mysql - MySQL 中的三个表的完全外连接

amazon-web-services - 如何从 SAM 模板中的 Lambda 访问 DynamoDB 表?

python-2.7 - 如何在AWS Lambda函数中查找S3文件而不先下载它?

sql - 添加一列,其中包含客户通过订单时的订单计数

amazon-web-services - 具有自动缩放功能的AWS RDS