当我运行以下命令时:
val df1 = sqlContext.read.format("orc").load(myPath)
df1.columns.map(m => println(m))
列打印为“_col0”、“_col1”、“_col2”等。与它们的真实名称相反,例如“empno”、“name”、“deptno”。
当我在 Hive 中“描述 mytable”时,它会正确打印列名,但是当我运行“orcfiledump”时,它也会显示 _col0、_col1、_col2。我是否必须指定“读取模式”或其他内容?如果是,我该如何在 Spark/Scala 中做到这一点?
hive --orcfiledump /apps/hive/warehouse/mydb.db/mytable1
.....
fieldNames: "_col0"
fieldNames: "_col1"
fieldNames: "_col2"
注意:我创建的表如下:
create table mydb.mytable1 (empno int, name VARCHAR(20), deptno int) stored as orc;
注意:这不是这个问题的副本(Hadoop ORC 文件 - 如何工作 - 如何获取元数据),因为答案告诉我使用“Hive”并且我已经在使用 HiveContext,如下所示:
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
顺便说一句,我使用的是我自己的 hive-site.xml,其中包含以下内容:
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://sandbox.hortonworks.com:9083</value>
</property>
</configuration>