Когда я запускаю следующее:HiveContext не читает схемы из Orcfile
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 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
Поскольку схема хранится в метасторе, это скорее всего означает, что вы не используете один и тот же метастор для обеих операций, правильно? – zero323