gpt4 book ai didi

sql - Hive如何根据列值提取数据并写入本地文件

转载 作者:可可西里 更新时间:2023-11-01 15:21:37 27 4
gpt4 key购买 nike

我正在尝试从 Hive 表中提取数据并写入本地文件:

每列“日期”值一个输出文件。我的 Hive 表将有大约 2 年以上的数据历史记录,这意味着我将需要大约 700 多个不同的输出文件。

我目前的知识只允许我每次运行写一个文件,这是我的代码可以在 Hive 命令行中运行:

INSERT OVERWRITE LOCAL DIRECTORY '/local/hive/temp'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
select date, col1, col2, col3, col4, col5
from WH_TEMP_EXTRACT.table_temp
where date='2015-09-17';

我不是开发人员,但目前正在研究执行此任务的所有选项。感谢您在这里提供的任何帮助。

最佳答案

将单个查询中的所有 2 年数据提取到本地文件中。之后,您可以使用 awk 命令将它们放入单独的文件中,如下所示。

/tmp/hive> ls -l
total 4
-rw-r--r-- 1 xxxxxxx yyyyyy 228 Sep 20 10:11 hive_extract.dat
/tmp/hive> cat hive_extract.dat
2018-09-17,abc,134
2018-09-17,abc,135
2018-09-17,abc,136
2018-09-17,abc,137
2018-09-17,abc,138
2018-09-18,abc,141
2018-09-18,abc,142
2018-09-18,abc,143
2018-09-18,abc,144
2018-09-19,abc,150
2018-09-19,abc,151
2018-09-19,abc,152
/tmp/hive> awk -F"," '{ print $0 > "file_"$1 }' hive_extract.dat
/tmp/hive> ll
total 28
-rw-r--r-- 1 xxxxxxx yyyyyy 228 Sep 20 10:11 hive_extract.dat
-rw-r--r-- 1 xxxxxxx yyyyyy 57 Sep 20 10:13 file_2018-09-19
-rw-r--r-- 1 xxxxxxx yyyyyy 76 Sep 20 10:13 file_2018-09-18
-rw-r--r-- 1 xxxxxxx yyyyyy 95 Sep 20 10:13 file_2018-09-17
/tmp/hive> cat file_2018-09-17
2018-09-17,abc,134
2018-09-17,abc,135
2018-09-17,abc,136
2018-09-17,abc,137
2018-09-17,abc,138
/tmp/hive> cat file_2018-09-18
2018-09-18,abc,141
2018-09-18,abc,142
2018-09-18,abc,143
2018-09-18,abc,144
/tmp/hive> cat file_2018-09-19
2018-09-19,abc,150
2018-09-19,abc,151
2018-09-19,abc,152
/tmp/hive>

让我知道这个解决方案是否适合您。

编辑 1:使用 gsub

awk -F"," '{ gsub("-","_",$1); print $0 > "file_"$1 }' hive_extract.dat

编辑 2:

awk -F"," 'BEGIN { OFS=","} { gsub("-","_",$1); print $0 > "file_"$1 }' hive_extract.dat

编辑 3:

awk -F"," '{ fx=$1;gsub("-","_",fx);print $0 > "file_"fx }' hive_extract.dat

关于sql - Hive如何根据列值提取数据并写入本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52409462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com