的模式当我运行以下:HiveContext未读取Orcfile
val df1 = sqlContext.read.format("orc").load(myPath)
df1.columns.map(m => println(m))
的列印刷作为“_col0”,“_col1”,“_col2”等。作为反对他们的真实姓名,例如'empno','name','deptno'。
当我在Hive中描述mytable时,它会正确输出列名,但是当我运行'orcfilingump'时,它也会显示_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 file - How it works - How to fetch metadata)因为答案告诉我使用“蜂巢” &我已经的副本使用HiveContext如下:
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
顺便说一句,我用我自己的蜂房的site.xml,它包含以下内容:
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://sandbox.hortonworks.com:9083</value>
</property>
</configuration>
可能重复的[Hadoop ORC文件 - 它如何工作 - 如何获取元数据](http://stackoverflow.com/questions/30094604/hadoop- orc-file-how-it-works-how-to-fetch-metadata) – zero323
我已经阅读过它,但它说..“使用Hive和/或HCatalog创建,读取....”。但是我使用HiveContext来读取。那么这个答案如何帮助我?请解释。 – DilTeam
由于模式存储在Metastore中,它很可能意味着您不会对两种操作使用相同的Metastore,对吗? – zero323