从Hive sql中的第n个存储桶中获取所有记录

问题描述 投票:0回答:1

如何从配置单元中的第n个存储桶中获取所有记录。

从桶9的bucketTable中选择*;

apache-spark hive apache-spark-sql bigdata bucket
1个回答
0
投票

您可以使用不同的方法来实现:

Approach-1:通过从stored location]中获取表desc formatted <db>.<tab_name>

然后直接从9th bucket读取HDFS filesystem文件。

(或)

Approach-2:

使用input_file_name()

然后仅使用文件名过滤9th bucket数据

Example:

Approach-1:

val df=spark.sql("desc formatted <db>.<tab_name>")

//get table location in hdfs path
val loc_hdfs= df.filter('col_name === "Location").select("data_type").collect.map(x => x(0)).mkString

//based on your table format change the read format
val ninth_buk= spark.read.orc(s"${loc_hdfs}/000008_0")

//display the data
ninth_buk.show()

Approach-2:

 val df=spark.read.table("<db>.<tab_name>")

//add input_file_name 
 val df1=df.withColumn("filename",input_file_name())

#filter only the 9th bucket filename and select only required columns
val ninth_buk= df1.filter('filename.contains("000008_0")).select(df.columns.head,df.columns.tail:_*)

ninth_buk.show()

Method-2

如果您有大量数据,我们不建议使用此方法,因为我们需要筛选整个数据帧。
© www.soinside.com 2019 - 2024. All rights reserved.