Hadoop 是否将配置单元数据导出到文件?

Hadoop 是否将配置单元数据导出到文件?,hadoop,mapreduce,hive,sqoop,avro,Hadoop,Mapreduce,Hive,Sqoop,Avro,将配置单元数据导出到文件以便以后Sqoop导出使用的最佳方法是什么?我有一些配置单元表,但我想连接它们并将它们导出到文件中,这样我就可以使用Sqoop将它们导出到不同的系统中 我可以用这样的东西: INSERT OVERWRITE LOCAL DIRECTORY $fileLocation ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' SELECT * from ...... INNER JOIN...... 所以我的问题是,有更好的方法吗?A

将配置单元数据导出到文件以便以后Sqoop导出使用的最佳方法是什么?我有一些配置单元表,但我想连接它们并将它们导出到文件中,这样我就可以使用Sqoop将它们导出到不同的系统中

我可以用这样的东西:

INSERT OVERWRITE LOCAL DIRECTORY $fileLocation
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
SELECT * from ...... INNER JOIN...... 
所以我的问题是,有更好的方法吗?Avro能在多大程度上加快这一过程?因为我以后需要使用Sqoop,TEXT和AVRO只是我的选择,对吗

SET hive.exec.compress.output=true;
set avro.output.codec=snappy;

INSERT OVERWRITE LOCAL DIRECTORY $fileLocation
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS AVRO
SELECT * FROM ..... INNER JOIN...... 

它肯定会压缩文件,但Sqoop需要在导出之前对其进行解压缩。那么这仍然是一个更好的选择吗?我应该在这里尝试的任何其他选项?

Sqoop可以使用
--export dir
Sqoop export参数直接从配置单元表下的HDFS目录导出配置单元数据

通过在配置单元中运行以下命令,可以找到映射到配置单元表的HDFS目录:

hive> DESCRIBE EXTENDED tablename;
...
...location:hdfs://path/to/the/table/data...
...

谢谢杰里米的回复。我知道,但在这种情况下,我不想创建一个表。好吧,我想我被你提到的关键字
LOCAL
搞糊涂了。您需要创建一个表来执行此操作,但是如果它是一个
外部
表,那么您可以在填充后立即删除该表,数据将保留在HDFS上,但表定义将不再存在。您是对的,“LOCAL”是一个拼写错误,我在提出此问题后想更改它,但没有找到方法。因为我需要使用Sqoop,所以它肯定不能是本地文件系统。回到我的问题,假设我有一个表,这个表可以用来存储增量数据。导出后,它将被截断。那么,有没有其他方法来实现这一点?我想找一个更快的方法。有多少文件格式可以帮助您提高性能?另一种方法是通过管道传输配置单元输出(来自脚本),然后对其进行压缩,并使用其他方法(而不是Sqoop)移动数据。使用Sqoop是实现这一点的标准且通常是最快的方法,因为它可以并行运行。AFAIK Sqoop当前只能导出带分隔符的文本文件,因此其他格式(如Avro)将不兼容。确定吗?虽然我在Sqoop中大多数时候都使用文本文件,但我遇到了以下问题: