Scala 创建具有多个拼花的蜂巢

Scala 创建具有多个拼花的蜂巢,scala,hive,parquet,Scala,Hive,Parquet,我有拼花地板文件夹,其名称为“yearquarter”,从(2007年第一季度-2020年第三季度)开始。我正在创建的配置单元表应该只从2014q1到2020q2提取数据。如何实现这一点?您必须更改拼花地板文件夹名称,并为其添加前缀,如yearquarter=2001q1(例如),该前缀指示存储这些值的列,因此它位于顶层文件夹下的层次结构中(下面名为table_name) 基于配置单元的解决方案: 然后,您将创建一个位于顶层文件夹中的外部配置单元表。您可以选择external,以便设置位置。表架

我有拼花地板文件夹,其名称为“yearquarter”,从(2007年第一季度-2020年第三季度)开始。我正在创建的配置单元表应该只从2014q1到2020q2提取数据。如何实现这一点?

您必须更改拼花地板文件夹名称,并为其添加前缀,如
yearquarter=2001q1
(例如),该前缀指示存储这些值的列,因此它位于顶层文件夹下的层次结构中(下面名为
table_name

基于配置单元的解决方案:

然后,您将创建一个位于顶层文件夹中的
外部
配置单元表。您可以选择
external
,以便设置位置。表架构应与文件中的列标签相对应

CREATE EXTERNAL TABLE TABLE_NAME (
   col_name1 HIVE_TYPE, 
   ..., 
   col_nameN HIVE_TYPE)
PARTITIONED BY (yearquarter STRING)
STORED AS PARQUET
LOCATION '/location/to/your/table_name';
在文件夹层次结构上有一个按文件夹分区的配置单元表后,创建一个配置单元视图,该视图使用
WHERE
子句
选择一个子集

CREATE VIEW view_name 
AS SELECT * 
FROM table_name 
WHERE yearquarter >= "2014q1" AND yearquarter <= "2020q2";

这是蜂巢问题还是scala火花问题?
CREATE VIEW view_name 
AS SELECT * 
FROM table_name 
WHERE yearquarter >= "2014q1" AND yearquarter <= "2020q2";
// Read parquet hierarchy. The schema (if present) is automatically detected.
val df = spark.read.parquet("/location/to/your/table_name")

// Set filter condition to use.
val filterCondition = col("yearquarter") >= "2014q1" && col("yearquarter") <= "2020q2"

// Filter according to condition.
val filtered = df.filter(filterCondition)