2016-11-16 110 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

@不用客氣 –