#python #hive #casting #floating-point #integer
#python #улей #Кастинг #значение с плавающей запятой #целое
Вопрос:
Ряд столбцов, содержащих целочисленные значения 0/1 в моей таблице Hive, переписываются как значения с плавающей запятой 0.0 или 1.0 после извлечения таблицы во фрейм данных Python. Поэтому то, что я считал целочисленными полями размером в 1 байт, потребляет больше памяти в качестве переменных с плавающей точкой.
Есть ли способ выбрать несколько полей по столбцу # в таблице Hive и преобразовать столбцы из float в integer?
Комментарии:
1. Эти столбцы являются float в таблице Hive или int? Как вы считываете таблицу Hive в Python dataframe, с помощью spark или как-то еще?
2. @serge_k Столбцы, которые я хотел бы преобразовать, имеют тип double . Я читаю таблицы в Python, используя функцию connect (hive_conn = connect(host =…, port = …, auth_mechanism= …, kerberos_service_name = …)), за которой следует функция read_sql (df = pd.read_sql(«‘выбрать * из <имя таблицы>»», hive_conn)).
3. @serge_k Хм, похоже, что невозможно выбрать диапазон или группу номеров столбцов в Hive. Я смог преобразовать из double в int, но мне пришлось использовать list всех имен столбцов в Hive, затем скопировать и вставить в Excel и создать select cast(x1 как int), cast(x2 как int) ….. из инструкции data_table; .