2016-11-16 75 views
1

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

我已经设法将这两个文件上传到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://[email protected]/folder1/data.xls/' 

我不确定这是否是不可能的,因为似乎有在这里,但根据我的上司是一个类似的问题,矛盾的反应,应该有一个可能与蜂巢做到这一点 - 而无需在上传到Hadoop之前将文件类型转换为相同的格式!

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

回答

2

我不认为你可以指定一个Excel文件作为表的位置。

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

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

蜂巢并不直接支持EXCEL格式,所以你必须到Excel文件转换为定界格式的文件,然后使用load命令将文件上传到Hive(或HDFS)。

+0

@杨布莱恩感谢您的回复。我认为你说的是​​对的。我只是偶然发现另一个链接,指出在这个[link]下将数据从.xls格式读取到Hive表格中的另外两个选项(http://stackoverflow.com/questions/29429679/how-to-load-xls-data-from -multiple-xls-file-into-hive),但似乎没有这种做法的“直接”方式。我试图upvote您的答复,但由于我没有足够的代表它不会被看到。再次感谢您的时间和帮助。 – themightyhulk

+0

@不用客气 –