hive是否能够根据查询中的分组语句将查询写入不同的文件(例如,不同的.csv文件)?
例如玩具数据集 extract
:
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\u aubrey\u ford.csv、smith\u audrey\u toyota.csv等写入本地目录。这在 hive 里可能吗?如果没有,那Pig呢?
编辑:
我发现,虽然这在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
1条答案
按热度按时间ygya80vv1#
没有基于groupby直接输出到本地目录的方法。我建议采用以下方法
将select查询with required group by子句写入文件名query1.hql
配置单元-f query1.hql>/smith\u aubrey\u ford.csv
将另一个select查询写入另一个文件query2.hql
配置单元-f query2.hql>/smith\u audrey\u toyota.csv
等等。
因此,您将获得存储在本地目录中的所需结果。
希望这个方法有用。