分区基于列的数据值

问题描述:

您好我有数据源如下分区基于列的数据值

ID  Date   Page 

100  27-10-2015  google 
102  27-10-2015  facebook 
102  27-10-2015  instagram 
104  28-10-2015  yahoo 
105  30-10-2015  bing 

我想存储与所述形式的镶木格式此数据如下所示

/foldername/columname=value/data.parquet 

对于例如这里

/output/ID=102/data.parquet 
/output/ID=104/data.parquet 

这里data.parquet包含实木复合格式的列ID = 102的值。

任何人都可以帮助我如何实现这一目标吗?

使用DataFrames你的代码应该是这样的:

val df = yourData 
df.write.partitionBy(['ID']).format("parquet").save(dest, mode="append") 

比方说你的数据源表:t1
下面的SQL将创建你的表格你想:

SET hive.exec.dynamic.partition.mode=nonstrict; 

CREATE TABLE T1_PRQT (date string,page string) 
PARTITIONED BY (id int) 
STORED AS parquet 
LOCATION '/output'; 

INSERT OVERWRITE TABLE T1_PRQT PARTITION(id) 
SELECT date,page,id FROM T1; 

第一行可以在插入时创建动态分区
“创建SQL”创建一个表,其中字段date,page,idid是分区列,文件格式为parquet,其存储在/output
插入SQL,将您上一个表t1中的数据加载到新的表中。