У меня есть одна таблица Hive:
hive> describe stock_quote;
OK
tickerid string
tradeday string
tradetime string
openprice string
highprice string
lowprice string
closeprice string
volume string
Следующий код Spark читает файлы CSV и пытается вставить записи в таблицу Hive:
sc = spark.sparkContext
lines = sc.textFile('file:///<File Location>')
rows = lines.map(lambda line : line.split(','))
rows_map = rows.map(lambda row : Row(TickerId = row[0], TradeDay = row[1], TradeTime = row[2], OpenPrice = row[3], HighPrice = row[4], LowPrice = row[5], ClosePrice = row[6], Volume = row[7]))
rows_df = spark.createDataFrame(rows_map)
rows_df.write.mode('append').insertInto('default.stock_quote')
Проблема, с которой я сталкиваюсь,что, когда я вызываю функцию show () для фрейма данных, он печатает столбцы в алфавитном порядке, как показано ниже
|ClosePrice|HighPrice|LowPrice|OpenPrice|TickerId|TradeDay|TradeTime|Volume|
, а в таблицу вставляет значение ClosePrice (1-й столбец в DF) в TickerId (1-й столбец)в столбце Hive), значение HighPrice в столбце TradeDay и т. д.
Попытка вызова функции select () на фрейме данных не помогла.Попытался поместить список имен столбцов следующим образом:
rows_df = spark.createDataFrame(rows_map, ["TickerId", "TradeDay", "TradeTime", "OpenPrice", "HighPrice", "LowPrice", "ClosePrice", "Volume"])
Приведенный выше изменяет порядок имен столбцов, но значения остаются на той же позиции, что еще более неправильно.
Любая помощь будет действительнооценили.