Когда я запускаю следующее:
val df1 = sqlContext.read.format("orc").load(myPath)
df1.columns.map(m => println(m))
Столбцы печатаются как «_col0», «_col1», «_col2» и т. д. В отличие от их настоящих имен, таких как «empno», «name», «deptno».
Когда я «описываю mytable» в Hive, он правильно печатает имя столбца, но когда я запускаю «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>