Hive 直接将本地csv文件加载到配置单元拼花地板表,而不是临时文本文件表

Hive 直接将本地csv文件加载到配置单元拼花地板表,而不是临时文本文件表,hive,local,parquet,Hive,Local,Parquet,我现在准备将.csv文件中的数据存储到配置单元中。当然,由于拼花文件格式的良好性能,配置单元表应该是拼花格式。所以,通常的方法是创建一个格式为textfile的临时表,然后我将本地CSV文件数据加载到此临时表中,最后,创建一个相同结构的拼花地板表,并使用sql insert into parquet_table values select*from textfile_table 但我不认为这个临时文本文件表是必要的。所以,我的问题是,有没有一种方法可以让我直接将这些本地.csv文件加载到hive

我现在准备将.csv文件中的数据存储到配置单元中。当然,由于拼花文件格式的良好性能,配置单元表应该是拼花格式。所以,通常的方法是创建一个格式为textfile的临时表,然后我将本地CSV文件数据加载到此临时表中,最后,创建一个相同结构的拼花地板表,并使用sql insert into parquet_table values select*from textfile_table

但我不认为这个临时文本文件表是必要的。所以,我的问题是,有没有一种方法可以让我直接将这些本地.csv文件加载到hive parquet格式的表中,即不使用临时表?或者更容易完成此任务的方法?

如中所述:

load命令不执行针对架构的数据验证

如果文件位于hdfs中,则会将其移动到配置单元控制的文件系统命名空间中

您可以跳过一步,使用拼花地板桌子

因此,您将有3个步骤:

创建定义架构的文本表 将数据加载到文本表中将文件移动到新表中 从存储为拼花的textfile_表中选择*创建表拼花_表;
在我的例子中,数据是每小时生成一次的,因此,我可以将每小时的数据移动到hdfs中的文本模式表目录中,运行sql:CREATE table parquet_table AS SELECT*FROM textfile_table Storage AS parquet;然后,一小时后,我可以用新的com数据替换hdfs文件,而不是每小时删除并重新创建一个tmp表,对吗?是的,这是正确的。但是,如果文本表已分区,并且正在添加分区,则需要运行MSCK REPAIR table textfile_table,以便在SELET*中显示这些分区。这种方法仍然是实现这一点的唯一方法,或者可以跳过结构化和临时表的步骤,以便以前加载文本文件。