首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电火花阅读拼花中缺少的列

电火花阅读拼花中缺少的列
EN

Stack Overflow用户
提问于 2018-09-15 05:34:04
回答 1查看 4K关注 0票数 2

我有拼花文件,我需要从火花读。有些文件中缺少几个列,这些列在新文件中存在。

由于我不知道哪些文件缺少列,我需要读取所有的文件在火花。我有需要阅读的列的列表。也可能是因为所有的文件都缺少一些列。我需要在那些缺少的列中放一个空。

当我尝试做一个sqlContext.sql('query')时,它会让我错误地说列丢失了

如果我定义架构并执行

sqlContext.read.parquet('s3://....').schema(parquet_schema)

这也给了我同样的错误。

在这里帮我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-15 08:47:47

您需要使用拼花模式进化策略来解决这种情况。

如火花文档中所定义的那样

用户可以从一个简单的模式开始,并在需要时逐步向模式添加更多列。这样,用户最终可能会得到多个Parquet文件,这些文件具有不同但相互兼容的模式。Parquet数据源现在能够自动检测这种情况并合并所有这些文件的架构。

你要做的就是

代码语言:javascript
复制
val mergedDF = spark.read.option("mergeSchema", "true").parquet("'s3://....'")

这将为您提供完整模式的拼花数据。

痛点

如果您的模式不兼容,例如,一个拼花文件有col1 DataType作为String,而另一个拼图文件有col1 DataType作为Long

那么合并架构将失败。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52341905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档