Чтение файлов HDFS с использованием метаданных Hive - Pyspark - PullRequest
0 голосов
/ 06 марта 2019

Я новичок в PySpark и пытаюсь читать HDFS-файлы (на которых созданы таблицы кустов) и создавать кадры данных PySpark. Чтение таблиц Hive через PySpark занимает много времени. Есть ли способы, которыми я могу получить имена столбцов кустов (чтобы использовать в качестве схемы в dataframe) динамически?

Я хочу передать местоположение файла, имя таблицы и имя базы данных в качестве входных данных для программы / функции, чтобы получить имя схемы / столбца из метаданных куста (возможно, метаданные xml) и вернуть в виде фрейма данных.

Пожалуйста, сообщите

1 Ответ

1 голос
/ 07 марта 2019

Вы можете получить список имен столбцов, вызвав фрейм данных. column

df1 = spark.sql('select * from bla')
df1.columns
['col1', 'col2']

Метод printschema поможет вам в случае, если вам нужны типы столбцов

df1.printSchema()
root 
|-- col1: long (nullable = true) 
|-- col2: long (nullable = true) 

Оба метода не читают никаких данных из таблиц, кроме схемы. Еще одна вещь, которую вы можете попробовать, когда пытаетесь улучшить производительность, - это хранить таблицы в формате паркета. Вы можете сделать это с помощью следующей команды:

df1.write.mode("overwrite").saveAsTable("blaASParquet")

Паркет - это хранилище на основе столбцов, что полезно для большинства методов агрегирования.

...