Hive 通过在配置单元中分组写出表
配置单元是否能够根据查询中的分组语句向不同的文件(例如不同的.csv文件)写入查询 例如,对于玩具数据集Hive 通过在配置单元中分组写出表,hive,apache-pig,grouping,overwrite,Hive,Apache Pig,Grouping,Overwrite,配置单元是否能够根据查询中的分组语句向不同的文件(例如不同的.csv文件)写入查询 例如,对于玩具数据集提取: LName FName Car_make Year ----- ----- -------- ---- Smith Audrey Ford 2000 Smith Audrey Ford 2013 Smith Audrey Toyota 1996 Miller Heath Ford 1
提取:
LName FName Car_make Year
----- ----- -------- ----
Smith Audrey Ford 2000
Smith Audrey Ford 2013
Smith Audrey Toyota 1996
Miller Heath Ford 1995
Miller Heath Dodge 1990
Miller Heath Dodge 2010
要通过以下方式使用分组写出数据集:
INSERT OVERWRITE LOCAL DIRECTORY '/user/drwho/foodf'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
SELECT
LNAME,
FNAME,
CAR_MAKE,
AVG(YEAR) AS AVERG
FROM EXTRACT
GROUP BY LNAME, FNAME, CAR_MAKE
并将输出集SMITH_AUBREY_FORD.csv、SMITH_AUDREY_TOYOTA.csv等写入本地目录。这在蜂巢里可能吗?如果没有,猪呢
编辑:
我发现,虽然这在Hive中是不可能的,但我们可以使用@K S Nidhin的建议将查询写入本地目录,而使用awk:
$ cat extract.txt
Smith,Audrey,Ford,2000
Smith,Audrey,Ford,2013
Smith,Audrey,Toyota,1996
Miller,Heath,Ford,1995
Miller,Heath,Dodge,1990
Miller,Heath,Dodge,2010
$ awk -F "," '{ print > $1"_"$2"_$3".txt" }' extract.txt
$ ls -1
extract.txt
Miller_Heath_Dodge.txt
Miller_Heath_Ford.txt
Smith_Audrey_Ford.txt
Smith_Audrey_Toyota.txt
没有基于group by直接输出到本地目录的方法。我建议采取以下办法
将带有必需group by子句的Select查询写入文件名query1.hql
蜂巢-f query1.hql>/SMITH\u AUBREY\u FORD.csv
将另一个select查询写入另一个文件query2.hql
蜂巢-f query2.hql>/SMITH\u AUDREY\u TOYOTA.csv
等等
因此,您将获得存储在本地目录中的所需结果
希望这种方法有帮助