val df1 = sqlContext.read.format("orc").load(myPath)
df1.columns.map(m => println(m))
这些列被打印为“_col0”,“_col1”,“_col2”等,而不是它们的真实名称,例如“empno”,“name”,“deptno”。
当我在Hive中使用“describe mytable”时,它正确地打印了列名,但是当我运行“orcfiledump”时,它也显示_col0,_col1,_col2。我需要指定“schema on read”或者其他什么吗?如果是,我该如何在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>