oracle - AWS Athena 中的“整数溢出”超过 8 亿条记录
问题描述
我使用 Spark EMR 以 parquet 格式将表从 Oracle 复制到 S3,然后使用 Glue 爬虫从 S3 爬取数据并在 Athena 中注册。数据摄取很好,但是当我尝试预览数据时,它显示了这个错误:
GENERIC_INTERNAL_ERROR:整数溢出
我已经多次尝试过管道。原始架构是这样的:
SAMPLEINDEX(NUMBER38, 0)
GENEINDEX(NUMBER38, 0)
VALUE(FLOAT)
MINSEGMENTLENGTH(NUMBER38, 0)
我尝试将数据转换为整数、长整数和字符串,但错误仍然存在。我还检查了原始数据集,没有发现任何可能导致 int 溢出的值。
包含 < 8 亿行的表可以正常工作。但是当表有超过 8 亿行时,错误开始出现。
这是scala中的一些示例代码:
val table = sparkSession.read
.format("jdbc")
.option("url", "jdbc:oracle:thin://@XXX")
.option("dbtable", "tcga.%s".format(tableName))
.option("user", "XXX")
.option("password", "XXX")
.option("driver", "oracle.jdbc.driver.OracleDriver")
.option("fetchsize", "50000")
.option("numPartitions", "200")
.load()
println("writing tablename: %s".format(tableName))
val finalDF = table.selectExpr("cast(SAMPLEINDEX as string) as SAMPLEINDEX", "cast(GENEINDEX as string) as GENEINDEX",
"cast(VALUE as string) as VALUE", "cast(MINSEGMENTLENGTH as string) as MINSEGMENTLENGTH")
finalDF.repartition(200)
finalDF.printSchema()
finalDF.write.format("parquet").mode("Overwrite").save("s3n://XXX/CNVGENELEVELDATATEST")
finalDF.printSchema()
finalDF.show()
有谁知道可能导致问题的原因?
解决方案
推荐阅读
- javascript - 试图显示 Json 结果但只得到 [Object,Object]
- c# - 在 Unity 中从 Tilemap 获取邻居
- python-3.x - 如何在gensim中使用sklearn api显示主题词
- java - 数组未排序 (QuickSort)
- sql-server - SQL Server - 违反 PRIMARY KEY 约束“PK_XX_XXXXX”且未找到约束
- angular - Angular 如何避免错误破坏 valueChanges
- python - vscode python远程解释器
- c++ - 指针向量中的内存泄漏
- java - 有人可以在执行 jarfile 后解释终端中的输出吗
- azure-devops - Azure DevOps - Slack 集成不适用于构建完成事件