分区基于列的数据值
问题描述:
您好我有数据源如下分区基于列的数据值
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,id
为id
是分区列,文件格式为parquet
,其存储在/output
。
插入SQL,将您上一个表t1
中的数据加载到新的表中。