我是PySpark的新手,正在尝试读取HDFS文件(在其上面创建了配置单元表)并创建PySpark数据帧。通过PySpark读取Hive表非常耗时。有什么方法可以动态获取配置单元列名称(以用作数据帧中的架构)?
我希望将文件位置,表名和数据库名作为输入传递给程序/函数,以从配置单元元数据(可能是元数据xml)中获取架构/列名,并作为数据框返回。
请告知
答案 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是基于列的存储,对于大多数聚合方法都是有益的。