Apache spark 从配置单元sql中的第n个存储桶获取所有记录

Apache spark 从配置单元sql中的第n个存储桶获取所有记录,apache-spark,hive,apache-spark-sql,bigdata,bucket,Apache Spark,Hive,Apache Spark Sql,Bigdata,Bucket,如何从蜂箱中的第n个桶中获取所有记录 从bucket 9的bucketTable中选择* 您可以通过不同的方式实现这一点: 方法1:通过从desc格式获取表存储位置。 然后直接从HDFS文件系统读取9th bucket文件 (或) 方法2:使用输入文件名() 然后使用文件名仅过滤9个bucket数据 示例: 方法一: Scala: val df = spark.sql("desc formatted <db>.<tab_name>") //get t

如何从蜂箱中的第n个桶中获取所有记录


从bucket 9的bucketTable中选择*

您可以通过不同的方式实现这一点:

方法1:通过从
desc格式获取表
存储位置

然后直接从
HDFS文件系统
读取
9th bucket
文件

(或)

方法2:使用输入文件名()

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

示例:

方法一:

Scala:

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()
 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()
方法2:

Scala:

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()
 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()
如果您有大量数据,则不建议使用方法2,因为我们需要过滤整个数据帧


在蜂巢中:

如果是兽人的桌子

SELECT * FROM orc.<bucket_HDFS_path>
从orc中选择*。
其中
bucketing_table
是您的bucket table名称

n => nth bucket
y => total no. of buckets

如果表存储为…df.write.bucketBy(50,“id”).saveAsTable(“myHiveTable”)@baidyas,那么这种方法有效吗?我认为当我们从spark->hive bucketed table写入数据时,仍然存在一些问题(),最好使用hive作业将数据写入bucketed表:)
select * from bucketing_table tablesample(bucket n out of y on clustered_criteria_column);
n => nth bucket
y => total no. of buckets