hadoop - 配置单元 : Save query result in HDFS and load into a new table

标签 hadoop hive hiveql tez

我有一个包含 3 个分区的配置单元表 (dt,service_type,pv)

我想在不同的数据库中创建一个新表,其中包含来自该原始表的过滤数据。 (按用于分区的列过滤)

所以我使用SELECT查询数据如下,并将结果保存在HFDS中

INSERT OVERWRITE DIRECTORY  '/user/atscale/filterd-ratlog' SELECT * FROM rat_log_normalized WHERE dt >= '2016-05-01' AND dt <='2016-05-31' AND service_type='xxxxx_jp' AND event_type='yy';

这是 HDFS 中的结果文件夹结构。它被分成 531 个文件:

hdfs dfs -ls /user/atscale/filterd-ratlog

Found 531 items -rwxr-xr-x 3 atscale atscale 8838075079 2016-08-18 06:20 /user/atscale/filterd-ratlog/000000_0 -rwxr-xr-x 3 atscale atscale 8879084968 2016-08-18 06:15 /user/atscale/filterd-ratlog/000001_0 -rwxr-xr-x 3 atscale atscale 8821619748 2016-08-18 06:20 /user/atscale/filterd-ratlog/000002_0 -rwxr-xr-x 3 atscale atscale 8724063719 2016-08-18 06:20 /user/atscale/filterd-ratlog/000003_0 . . . -rwxr-xr-x 3 atscale atscale 6878819716 2016-08-18 06:42 /user/atscale/filterd-ratlog/000527_0 -rwxr-xr-x 3 atscale atscale 5461395906 2016-08-18 06:27 /user/atscale/filterd-ratlog/000528_0 -rwxr-xr-x 3 atscale atscale 6222887747 2016-08-18 06:26 /user/atscale/filterd-ratlog/000529_0 -rwxr-xr-x 3 atscale atscale 692289350 2016-08-18 06:37 /user/atscale/filterd-ratlog/000530_0

现在,我可以将 HDFS 文件中的这些数据加载到我的新表中吗?我也想保留分区..

最佳答案

我猜你正在寻找一个外部表:

DROP TABLE IF EXISTS filterd-ratlog;
create external table filterd-ratlog(
col1 int,
col2 int,
col3 int,
dt string,
service_type string,
event_type string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
location '/user/atscale/filterd-ratlog';

关于hadoop - 配置单元 : Save query result in HDFS and load into a new table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39011684/

相关文章:

php - 生成人口热图 : Mapreduce?

hadoop - 从 Hue UI 执行的 Oozie 中的 Hive 操作失败

hadoop - Hive中的Javascript日期转换

sql - 查询多个分区配置单元?

hadoop - 如果表包含重复行,则返回 bool 值(1 或 0)

hadoop - hadoop 中的 reducer 数量

hadoop - 如何使 hive 返回行更快? (例如,限制10)

hadoop - 如何使用 Hadoop 处理 .gz 输入文件?

java - 使用 Spring 挂起查询远程 Hive server2

java - 使用带有 Kerberos 身份验证的 Cloudera 驱动程序的 JAVA 连接到 HIVE