创建Hive表并从xls文件插入数据

时间:2016-11-16 04:57:54

标签: excel csv hadoop hive hiveql

我从我的主管那里得到了一个项目任务,他声称可以在HDInsight(对于Windows)中使用Hive,以便查询两种不同的文件类型,然后从中提取数据。其中一个文件是.xls,另一个是.csv文件。

我已经设法使用VS将这两个文件上传到Hadoop集群,然后尝试从.xls文件创建一个Hive表(我之前使用过教程,使用.csv文件与Hive配合使用)但是.xls文件我在尝试时经常收到“失败”错误。

我尝试了以下示例代码来创建表,分隔,字段终止(我尝试了几个没有成功),文件类型(不知道还有什么可以在这里使用)和目标位置。

DROP TABLE IF EXISTS table1;

CREATE EXTERNAL TABLE IF NOT EXISTS table1(id int, postcde int, city string) 
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' ' 
    STORED AS TEXTFILE LOCATION 'wasb://container@resourcegroup.blob.core.windows.net/folder1/data.xls/'

我不确定这是否可行,因为这里似乎对类似问题的答案相互矛盾,但据我的主管说,应该有可能用Hive做这个 - 没有在上传到Hadoop之前将文件类型转换为相同的格式!

https://community.hortonworks.com/questions/31968/hi-is-there-a-way-to-load-xlsx-file-into-hive-tabl.html

2 个答案:

答案 0 :(得分:4)

我认为您不能将excel文件指定为表的位置。

Hive可以在HDFS中保存数据(https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL) 或

S3存储(http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hive-additional-features.html

Hive不直接支持EXCEL格式,因此您必须将excel文件转换为分隔格式文件,然后使用load命令将文件上载到Hive(或HDFS)。

答案 1 :(得分:1)

HadoopOffice库具有一个Hive模块(Hadoop / Spark / Flink除外),该模块允许使用具有Hive中各种功能的Excel文件(.xlsx,.xls): https://github.com/ZuInnoTe/hadoopoffice/wiki