Hive 通过在配置单元中分组写出表

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

配置单元是否能够根据查询中的分组语句向不同的文件(例如不同的.csv文件)写入查询

例如,对于玩具数据集
提取

 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
  • 等等

    因此,您将获得存储在本地目录中的所需结果

    希望这种方法有帮助