Не удалось получить имена фактических столбцов из файла ORC в Spark [duplicate]

Кто-нибудь знает, существует ли глубокое слияние в спецификации ES6 / ES7?

Нет, это не так.

3
задан Ramu Malur 10 October 2016 в 12:45
поделиться

5 ответов

Проблема заключается в версии Hive, которая равна 1.2.1, которая имеет эту ошибку HIVE-4243

. Это было исправлено в 2.0.0.

5
ответ дан dev ツ 19 August 2018 в 05:29
поделиться

Если обновление версии не является доступной опцией, быстрое исправление может состоять в том, чтобы переписать файл ORC с помощью PIG. Кажется, это работает нормально.

-2
ответ дан GhostCat 19 August 2018 в 05:29
поделиться

Если у вас есть паркетная версия, вы можете просто скопировать имена столбцов, что я и сделал (также столбец даты был разделом ключа для 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)
0
ответ дан ski_squaw 19 August 2018 в 05:29
поделиться

Установка

sqlContext.setConf('spark.sql.hive.convertMetastoreOrc', 'false')

исправляет это.

0
ответ дан Tonci 19 August 2018 в 05:29
поделиться

Мы можем использовать:

val df = hiveContext.read.table("tableName")

Ваши df.schema или df.columns будут давать фактические имена столбцов.

0
ответ дан Tshilidzi Mudau 19 August 2018 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: