使用Hive元数据读取HDFS文件-Pyspark

时间:2019-03-05 21:19:38

标签: python dataframe pyspark apache-spark-sql pyspark-sql

我是PySpark的新手,正在尝试读取HDFS文件(在其上面创建了配置单元表)并创建PySpark数据帧。通过PySpark读取Hive表非常耗时。有什么方法可以动态获取配置单元列名称(以用作数据帧中的架构)?

我希望将文件位置,表名和数据库名作为输入传递给程序/函数,以从配置单元元数据(可能是元数据xml)中获取架构/列名,并作为数据框返回。

请告知

1 个答案:

答案 0 :(得分:1)

您可以通过调用数据框来获取列名称的列表。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")

Parquet是基于列的存储,对于大多数聚合方法都是有益的。