我是Pyspark的新手,并尝试读取HDFS文件(在其顶部创建了Hive Tables)并创建Pyspark DataFrames。通过Pyspark阅读蜂巢桌很耗时。有什么方法可以动态地获取Hive列名称(在DataFrame中用作架构)?
我希望将文件位置,表名和数据库名称作为输入传递给AA程序/函数,以从Hive Metadata(可能是元数据XML)获取架构/列名,并返回为DataFrame。
请建议
您可以通过调用dataframe.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是基于列的存储,这对于大多数聚合方法都是有益的。