Hive 将数据从配置单元/黑斑羚表导出到文件中,条件很少

Hive 将数据从配置单元/黑斑羚表导出到文件中,条件很少,hive,sqoop,impala,Hive,Sqoop,Impala,将具有条件的数据从hive/impala表导出到文件(数据量巨大,接近10GB)的有效方法是什么?配置单元表的格式为paraquet,snappy压缩,文件为csv 该表每天进行分区,需要每天提取数据,我想知道 1) 伊马帕拉方法 impala shell-k-i servername:portname-B-q'从表中选择*,其中年\月\日期=$$$$$$$$'-o文件名'--输出\分隔符=\001' 2) 蜂巢法 插入覆盖目录“/path”从年\月\日期所在的表中选择*=$$$$$$$$ 如果

将具有条件的数据从hive/impala表导出到文件(数据量巨大,接近10GB)的有效方法是什么?配置单元表的格式为paraquet,snappy压缩,文件为csv

该表每天进行分区,需要每天提取数据,我想知道

1) 伊马帕拉方法

impala shell-k-i servername:portname-B-q'从表中选择*,其中年\月\日期=$$$$$$$$'-o文件名'--输出\分隔符=\001'

2) 蜂巢法

插入覆盖目录“/path”从年\月\日期所在的表中选择*=$$$$$$$$

如果将表
tbl
作为您的蜂巢拼花地板表,并将
条件作为您的过滤条件,将是有效的

CTAS命令:

 CREATE TABLE tbl_text ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/tmp/data' AS select * from tbl where condition;
您将在HDFS中的
/tmp/data
中找到您的CSV文本文件(以“,”分隔)

如果需要,可以使用以下方法将此文件发送到本地文件系统:

hadoop fs -get /tmp/data
假设表
tbl
作为您的蜂巢镶木地板表,
condition
作为您的过滤条件

CTAS命令:

 CREATE TABLE tbl_text ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/tmp/data' AS select * from tbl where condition;
您将在HDFS中的
/tmp/data
中找到您的CSV文本文件(以“,”分隔)

如果需要,可以使用以下方法将此文件发送到本地文件系统:

hadoop fs -get /tmp/data

请尝试为您的Hive/Impala表使用动态分区,以便有条件地高效导出数据

使用感兴趣的列并基于查询对表进行分区,以获得最佳结果

步骤1:创建一个临时配置单元表TmpTable并将原始数据加载到其中

步骤2:设置配置单元参数以支持动态分区

SET hive.exec.dynamic.partition.mode=non-strict;
SET hive.exec.dynamic.partition=true;
步骤3:使用分区列创建主配置单元表,例如:

CREATE TABLE employee (
 emp_id int,
 emp_name string
PARTITIONED BY (location string)
STORED AS PARQUET;
步骤4:将数据从临时表加载到员工表(主表)

步骤5:根据条件从配置单元导出数据

INSERT OVERWRITE DIRECTORY '/path/to/output/dir' SELECT * FROM employee  WHERE location='CALIFORNIA';
请参考此链接:


希望这有用。

请尝试对您的Hive/Impala表使用动态分区,以便有条件地高效导出数据

使用感兴趣的列并基于查询对表进行分区,以获得最佳结果

步骤1:创建一个临时配置单元表TmpTable并将原始数据加载到其中

步骤2:设置配置单元参数以支持动态分区

SET hive.exec.dynamic.partition.mode=non-strict;
SET hive.exec.dynamic.partition=true;
步骤3:使用分区列创建主配置单元表,例如:

CREATE TABLE employee (
 emp_id int,
 emp_name string
PARTITIONED BY (location string)
STORED AS PARQUET;
步骤4:将数据从临时表加载到员工表(主表)

步骤5:根据条件从配置单元导出数据

INSERT OVERWRITE DIRECTORY '/path/to/output/dir' SELECT * FROM employee  WHERE location='CALIFORNIA';
请参考此链接:


希望这是有用的。

添加详细信息:1。配置单元表2的文件格式。导出文件的文件格式添加详细信息:1。配置单元表2的文件格式。导出文件的文件格式谢谢Addy,对不起,我没有给出总体要求。我刚刚更新了关于分区的详细信息。请看一看并感谢您的回复。谢谢。阿迪,对不起,我没有给出全部要求。我刚刚更新了关于分区的详细信息。请看一看,并感谢您的回复。很抱歉,我没有给出总体要求。我刚刚更新了关于分区的详细信息。请看一看,并感谢您的回复。很抱歉,我没有给出总体要求。我刚刚更新了关于分区的详细信息。请看一看,并感谢您的回复