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_AUBREY_FORD.csv,SMITH_AUDREY_TOYOTA.csv等写出到本地目录。这可能在Hive中吗?如果不是,猪怎么样?
编辑:
我发现虽然这在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
答案 0 :(得分:1)
没有直接的方法可以根据group by输出到本地目录。我建议采用以下方法
等等。
因此,您将获得存储在本地目录中的所需结果。
希望这种方法有所帮助。