使用 Hive 元数据读取 HDFS 文件 - Pyspark
Read HDFS files using Hive metadata - Pyspark
我是 PySpark 的新手,正在尝试读取 HDFS 文件(在其上创建了配置单元 table)并创建 PySpark 数据帧。通过 PySpark 读取 Hive tables 非常耗时。有什么方法可以动态获取配置单元列名(用作数据框中的架构)?
我希望将文件位置、table 名称和数据库名称作为输入传递给 aa program/function 以从配置单元元数据(可能是元数据 xml) 和 return 作为数据框。
请指教
您可以通过调用 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 是基于列的存储,这对大多数聚合方法都是有益的。
我是 PySpark 的新手,正在尝试读取 HDFS 文件(在其上创建了配置单元 table)并创建 PySpark 数据帧。通过 PySpark 读取 Hive tables 非常耗时。有什么方法可以动态获取配置单元列名(用作数据框中的架构)?
我希望将文件位置、table 名称和数据库名称作为输入传递给 aa program/function 以从配置单元元数据(可能是元数据 xml) 和 return 作为数据框。
请指教
您可以通过调用 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 是基于列的存储,这对大多数聚合方法都是有益的。