Кто-нибудь знает, существует ли глубокое слияние в спецификации ES6 / ES7?
blockquote>Нет, это не так.
Проблема заключается в версии Hive, которая равна 1.2.1, которая имеет эту ошибку HIVE-4243
. Это было исправлено в 2.0.0.
Если обновление версии не является доступной опцией, быстрое исправление может состоять в том, чтобы переписать файл ORC с помощью PIG. Кажется, это работает нормально.
Если у вас есть паркетная версия, вы можете просто скопировать имена столбцов, что я и сделал (также столбец даты был разделом ключа для orc, поэтому пришлось переместить его в конец):
tx = sqlContext.table("tx_parquet")
df = sqlContext.table("tx_orc")
tx_cols = tx.schema.names
tx_cols.remove('started_at_date')
tx_cols.append('started_at_date') #move it to end
#fix column names for orc
oldColumns = df.schema.names
newColumns = tx_cols
df = functools.reduce(
lambda df, idx: df.withColumnRenamed(
oldColumns[idx], newColumns[idx]), range(
len(oldColumns)), df)
Установка
sqlContext.setConf('spark.sql.hive.convertMetastoreOrc', 'false')
исправляет это.
Мы можем использовать:
val df = hiveContext.read.table("tableName")
Ваши df.schema
или df.columns
будут давать фактические имена столбцов.