我有一个包含 ORC 文件的目录。我正在使用以下代码创建一个 DataFrame

var data = sqlContext.sql("SELECT * FROM orc.`/directory/containing/orc/files`");

它返回具有此架构的数据帧
[_col0: int, _col1: bigint]

预期的架构在哪里
[scan_nbr: int, visit_nbr: bigint]

当我查询 Parquet 格式的文件时,我得到了正确的架构。

我是否缺少任何配置?

添加更多细节

这是 Hortonworks Distribution HDP 2.4.2(Spark 1.6.1、Hadoop 2.7.1、Hive 1.2.1)

我们没有更改 HDP 的默认配置,但这绝对与 Hadoop 的普通版本不同。

数据由上游 Hive 作业写入,这是一个简单的 CTAS(CREATE TABLE sample STORED AS ORC as SELECT ...)。

我在 CTAS 使用最新的 2.0.0 hive 生成​​的文件上对此进行了测试,它保留了 orc 文件中的列名。

最佳答案

问题是Hive版本是1.2.1,有这个bug HIVE-4243

这是在 2.0.0 中修复的。

关于apache-spark - ORC 文件上的 Spark SQL 未返回正确的架构(列名),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38674623/

10-12 16:37