我从我的主管那里得到了一个项目任务,他声称可以在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之前将文件类型转换为相同的格式!
答案 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