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

the*_*ulk 1 csv excel 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/'
Run Code Online (Sandbox Code Playgroud)

我不确定这是否可能实现,因为这里似乎对类似的问题存在矛盾的回答,但是据我的主管说,应该使用Hive做到这一点- 无需将文件类型转换为相同格式,然后再上传到Hadoop!

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

小智 5

我认为您不能将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)中。